刹车员显示以下错误,文件是用回形针管理的。
在我的控制器中:
asset_file ||= AssetFile.find(params[:id])
如果资产文件
// 下载文件
发送文件asset_file.uploaded_file.path,:类型=> asset_file.uploaded_file_content_type
否则
flash[:error] = t('document.mind_your_asset_file')
重定向到 root_url
结束
请记住,Brakeman 不会报告错误[0],它会报告警告。它会生成有关应用程序中“潜在”安全问题的警告。换句话说,它会警告您一些您作为人类认为不是真正问题的事情。纯静态分析安全工具基本上不可能不报告误报。 您实际上并没有提出问题,所以我假设您想知道为什么报告此警告和/或如何修复它。如果这些都不是您的问题,请澄清。
Brakeman 知道
AssetFile
是一个模型(很可能是因为它是在
app/models
目录中定义的)。它知道 send_file
允许访问文件系统。当它看到 send_file AssetFile.find(params[:id]).uploaded_file.path
时,它会将其解释为模型属性(可能是数据库中的值),该属性可能是用户可控的。因此,它会生成一个
File Access
警告,让您知道该代码可能允许攻击者访问服务器上的任意文件。我想下一个问题是为什么 Brakeman 在您使用
paperclip
时报告此情况,所以这可能是安全的。好吧,因为布雷克曼对
paperclip
一无所知。然而,这种情况已经出现过很多次了,所以我将研究这是否安全,并查看是否将这种用法列入白名单。对于第二个问题,该怎么办——好吧,你不必做任何事情。虽然零刹车警告是一个崇高的目标,但总会有误报。对于此特定警告,您无法在不更改 Brakeman 本身的情况下使此代码对 Brakeman 显得更安全。
如果这篇文章的目的实际上是报告误报,那么最好
为 Brakeman 提出问题。 [0] 我想从技术上讲,它在“例外”表中报告了自己的错误,可以在屏幕截图中看到。将这些问题报告给 Brakeman 项目以查看是否可以修复可能会有所帮助。