我有一个代码
File file = new File(fileName)
我fileName
正在从其他细节做准备。但是,我越来越
文件名或路径的外部控制
当我将代码提交到安全扫描工具“Vera Code”时出现缺陷。有人可以帮我解决这个问题。
报告的问题意味着有人可以fileName
从外部修改,例如通过用户输入或修改配置文件。另见CWE-73:文件名或路径的外部控制。
这会导致一个安全漏洞,攻击者可以访问您文件系统上的任何文件,并读取文件甚至覆盖预期文件以外的文件。
您需要检查您的各个部分的来源fileName
。例如,假设用户能够extn
通过您的 Web UI 提供。如果您在应用程序中使用用户输入而无需进一步验证,则用户可能能够访问他不应该访问的文件:
User input: extn="/../etc/passwd"
Resulting fileName: "/certificateId docTypeLongName_FileId/../etc/passwd"
为了解决这个问题,您可以使用验证来确保输入不包含特定的字符串,例如..
,或者您可以使用白名单(如果可能的输入范围有限)来确保只提交众所周知的值。