Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails brakeman报告-直接模型属性用作文件名_Ruby On Rails_Brakeman - Fatal编程技术网

Ruby on rails brakeman报告-直接模型属性用作文件名

Ruby on rails brakeman报告-直接模型属性用作文件名,ruby-on-rails,brakeman,Ruby On Rails,Brakeman,制动器显示以下错误,文件正在使用回形针管理。 在我的控制器中 asset_file | |=AssetFile.find(参数[:id]) 如果是资产_文件 //正在下载文件 发送\u文件资产\u文件.上传的\u文件.路径,:type=>资产\u文件.上传的\u文件\u内容\u类型 否则 flash[:error]=t('document.mind\u your\u asset\u file') 将\u重定向到根目录\u url 结束 请记住,制动器不会报告错误[0],它会报告警告。它会生成有关

制动器显示以下错误,文件正在使用回形针管理。 在我的控制器中

asset_file | |=AssetFile.find(参数[:id])

如果是资产_文件
//正在下载文件
发送\u文件资产\u文件.上传的\u文件.路径,:type=>资产\u文件.上传的\u文件\u内容\u类型
否则
flash[:error]=t('document.mind\u your\u asset\u file')
将\u重定向到根目录\u url
结束


请记住,制动器不会报告错误[0],它会报告警告。它会生成有关应用程序中潜在安全问题的警告。换句话说,它会警告你,作为一个人类,你会判断这些事情不是真正的问题。纯静态分析安全工具根本不可能从不报告误报

您实际上没有问任何问题,因此我假设您希望知道报告此警告的原因和/或如何修复它。如果这两个问题都不是你的问题,请澄清

Brakeman知道
AssetFile
是一个模型(很可能是因为它是在
app/models
目录中定义的)。它知道
send_file
允许访问文件系统。当它看到
send_file AssetFile.find(params[:id]).uploaded_file.path
时,它将其解释为一个模型属性(可能是来自数据库的值),该属性可能是用户可以控制的。因此,它会生成一个
文件访问
警告,让您知道该代码可能允许攻击者访问服务器上的任意文件

我想下一个问题是为什么Brakeman在您使用
回形针时报告此情况,因此这可能是安全的。因为Brakeman对回形针一无所知。但是,这已经出现过很多次了,所以我将研究这是否安全,并了解如何将此用法列入白名单

至于第二个问题,你不需要做任何事情。虽然零刹车警告是一个崇高的目标,但总会有误报。对于此特定警告,在不更改Brakeman自身的情况下,您无法使此代码对Brakeman更安全

如果这篇文章的目的实际上是报告假阳性,那么最好是


[0]我猜从技术上讲,它会在“异常”表中报告自己的错误,这可以在您的屏幕截图中看到。向Brakeman项目报告这些问题可能会有所帮助,以查看是否可以修复这些问题。

如中所述,现在可以通过检查模型属性是否包含在值数组中来避免此错误。

对于假阳性Brakeman,您可以使用命令“Brakeman-I”忽略这些警告

浏览他们的工具并回答每个警告的一些问题。最后将文件另存为“config/brakeman.ignore”。下次运行“brakeman”时,它将运行忽略文件