3

我正在设置像“abc_1.pdf”这样的文件名,其中“1”是模型属性的值。但是闸门扫描仪将此视为安全问题。我需要通过引用具有模型属性的文件名来跟踪文件。你能告诉我,解决这个安全问题的正确方法是什么?

谢谢。

4

3 回答 3

1

请参阅宝石所有者答案

Brakeman 假设数据库中的任何信息都具有潜在危险。这可能不是真的 - 也许在您的应用程序中,用户无法设置文件名中使用的值。此外,您的应用程序可能会确保清理或限制 Brakeman 无法知道的值。Brakeman 只能产生关于潜在危险代码的警告,这意味着总会有一些误报。

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

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

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

于 2020-01-21T14:19:42.360 回答
0

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

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

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

于 2013-10-03T11:15:58.153 回答
0

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

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

于 2013-05-13T23:22:59.307 回答