外部控制文件名或路径CRLF安全问题

时间:2013-01-29 10:28:35

标签: java security newline

我有一个代码

File file = new File(fileName)

fileName我正在准备其他细节。但我得到了

External Control of File Name or Path
当我将我的代码提交给安全扫描工具'Vera Code'时,

缺陷。有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

报告的问题意味着某人可以从外部修改fileName,例如通过用户输入或修改配置文件。另请参阅CWE-73: External Control of File Name or Path

这会导致安全漏洞,攻击者可以访问文件系统上的任何文件,并且可以读取文件,甚至覆盖目标文件以外的其他文件。

您需要检查fileName的各个部分的来源是什么。例如,假设用户能够通过您的Web UI提供extn。如果您在应用程序中使用用户输入而无需进一步验证,则用户可以访问他不应该访问的文件:

User input: extn="/../etc/passwd"

Resulting fileName: "/certificateId docTypeLongName_FileId/../etc/passwd"

要解决此问题,您可以使用验证确保输入不包含..等特定字符串,或者您可以使用白名单(如果可能的输入范围是有限的),以确保只提交众所周知的值。