我将文件名设置为'abc_1.pdf',其中'1'是模型属性的值。但制动器扫描仪将此视为安全问题。我需要通过引用带有model属性的文件名来跟踪文件。能告诉我,解决这个安全问题的正确方法是什么?
感谢。
答案 0 :(得分:1)
请参阅宝石拥有者的答案here
Brakeman认为数据库中的任何信息均具有潜在危险。这可能不是正确的-也许在您的应用程序中,用户无法设置文件名中使用的值。同样,可能是您的应用程序确保清除或限制了Brakeman无法知道的值。 Brakeman只能发出有关潜在危险代码的警告,这意味着总会有一些误报。
据我所知,当使用不受信任的输入时,没有标准的方法可以安全地从Rails访问文件。危险值包括“。”和“ /”(可用于目录遍历攻击)。
恐怕我不能告诉您如何解决此问题,因为它取决于您的应用程序,您将必须确定它是否实际上是可利用的漏洞。抱歉!
我想这意味着如果您确定自己的代码,则将此警告添加到忽略文件中
答案 1 :(得分:0)
我不知道Brakeman gem,但您可以使用双射变换将您的引用模型属性附加到文件名,以便Brakeman不用担心。
或者您可以为模型属性生成某种唯一的哈希键,该哈希键存储在某个地方(else)以及模型属性,以便您稍后查找模型属性然后显示哈希键。
答案 2 :(得分:0)
生成文件名时可以清理模型属性
"abc_#{sanitize(@mymodel.some_attribute)}.pdf"
如果您发布确切的代码示例,我认为我们可以找到更好的解决方案。