我将文件名设置为'abc_1.pdf‘,其中'1’是模型属性的值。但brakeman扫描仪认为这是安全问题。我需要通过引用带有model属性的文件名来跟踪文件。你能告诉我,解决这个安全问题的正确方法是什么吗?
谢谢。
发布于 2020-01-21 22:19:42
请参阅gem所有者的回答here
Brakeman假设数据库中的任何信息都是潜在的危险。这可能不是真的-也许在您的应用程序中,文件名中使用的值不能由用户设置。此外,您的应用程序可能会确保清理或限制值,而Brakeman不知道这一点。Brakeman只能产生关于潜在危险代码的警告,这意味着总是会有一些误报。
据我所知,在使用不受信任的输入时,没有标准的方法可以从Rails安全地访问文件。危险的值包括".“和"/“,可用于目录遍历攻击。
恐怕我不能告诉你如何解决这个问题,因为它取决于你的应用程序,你必须确定它是否真的是一个可利用的漏洞。抱歉的!
我猜这意味着如果您确定您的代码是正确的,那么就将这个警告添加到忽略文件中
发布于 2013-05-14 07:22:59
我不知道Brakeman gem,但是你可以使用双射转换将你的引用模型属性附加到文件名上,这样Brakeman就不会担心了。
或者,您可以为您的模型属性生成某种唯一的hashkey,该hashkey与模型属性一起存储在某个地方(否则),这样您以后就可以查找模型属性,然后显示hashkey。
发布于 2013-10-03 19:15:58
您可以在生成文件名时清理模型属性
"abc_#{sanitize(@mymodel.some_attribute)}.pdf"我认为如果你发布准确的代码示例,我们可以找到更好的解决方案。
https://stackoverflow.com/questions/16528350
复制相似问题