Brakeman:文件名警告中使用的模型属性

时间:2013-05-13 18:04:44

标签: ruby-on-rails ruby security brakeman

我将文件名设置为'abc_1.pdf',其中'1'是模型属性的值。但制动器扫描仪将此视为安全问题。我需要通过引用带有model属性的文件名来跟踪文件。能告诉我,解决这个安全问题的正确方法是什么?

感谢。

3 个答案:

答案 0 :(得分:1)

请参阅宝石拥有者的答案here

Brakeman认为数据库中的任何信息均具有潜在危险。这可能不是正确的-也许在您的应用程序中,用户无法设置文件名中使用的值。同样,可能是您的应用程序确保清除或限制了Brakeman无法知道的值。 Brakeman只能发出有关潜在危险代码的警告,这意味着总会有一些误报。

据我所知,当使用不受信任的输入时,没有标准的方法可以安全地从Rails访问文件。危险值包括“。”和“ /”(可用于目录遍历攻击)。

恐怕我不能告诉您如何解决此问题,因为它取决于您的应用程序,您将必须确定它是否实际上是可利用的漏洞。抱歉!

我想这意味着如果您确定自己的代码,则将此警告添加到忽略文件中

答案 1 :(得分:0)

我不知道Brakeman gem,但您可以使用双射变换将您的引用模型属性附加到文件名,以便Brakeman不用担心。

或者您可以为模型属性生成某种唯一的哈希键,该哈希键存储在某个地方(else)以及模型属性,以便您稍后查找模型属性然后显示哈希键。

答案 2 :(得分:0)

生成文件名时可以清理模型属性

"abc_#{sanitize(@mymodel.some_attribute)}.pdf"

如果您发布确切的代码示例,我认为我们可以找到更好的解决方案。