SV.DOS.TMPFILEDEL
计划在退出时删除临时文件但是并未明确将其删除时,会出现该错误。该错误主要表示服务器或伺服小程式上下文中的问题。
漏洞与风险
应该尽快删除临时文件。如果文件包含敏感信息,那么它存在的时间越长,攻击者越有可能访问其内容。而且,因为目录通常会限制允许的文件的数量,所以可能会超出临时文件的数量,从而导致拒绝服务 (DoS) 问题。
Klocwork 安全漏洞 (SV) 检查器可识别可能创建危险数据的调用;这些调用被视为不安全的来源。用户所提供的任何数据都可能是不安全的来源,因为用户可能是攻击者,或者可能引入人为错误。
缓解与预防
应该在用过之后立即删除临时文件。
示例 1
复制
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("userName");
File file = File.createTempFile("file", ".dat");
file.deleteOnExit();
fillWithUserData(name);
char[] data = readData(file);
resp.getWriter().print(data);
}
针对第 19 行报告 SV.DOS.TMPFILEDEL:文件“file”计划在“退出时删除”,这表示它会在 jvm 的生存期中保留(如果是服务器或伺服小程式的生存期可能很长)。服务器端应用程序应显式移除文件。
扩展
此检查器可通过 Klocwork 知识库进行扩展。有关详情,请参阅调整 Java 分析。