java - 使用 java.io.File.createTempFile 时出现 Veracode 不安全临时文件错误

标签 java file security veracode secure-coding

我需要创建一个临时文件并将一些数据存储到其中。为此,我编写了以下代码:

import org.apache.commons.lang.RandomStringUtils;
import java.security.SecureRandom;

[...]

String random = RandomStringUtils.random(10, 0, 0, true, true, null, new SecureRandom());
File tempFile = File.createTempFile("PREFIX-" + random, ".pdf");

[...]

它确实工作得很好,但是当我将这段代码提交给 Veracode 时,我收到“不安全的临时文件(CWE ID 377)”错误。 我认为使用 SecureRandom 将使攻击者无法预测临时文件名。

在不让 Veracode 不高兴的情况下生成临时文件的正确方法是什么?

最佳答案

在使用 CreateTemp 文件(在较低版本的 java 中)创建文件时,它将首先创建一个具有给定后缀和前缀以及随机数的文件名。格式-->前缀+随机数+后缀。如果生成的名称已经存在,它只会增加随机数。这是算法中的问题,v 可以猜测下一个文件名是什么。

此问题已在 Java 6 中解决。但是,如果您在 veracode 中执行静态扫描,它们仍然会将其显示为错误,因为它们会在低于 6 的 Java 版本中导致易受攻击的问题。如果您使用的是更高版本,则没有问题。跳过它..

来自 veracode 的引用:https://www.veracode.com/blog/2009/01/how-boring-flaws-become-interesting

关于java - 使用 java.io.File.createTempFile 时出现 Veracode 不安全临时文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31258393/

相关文章:

java - 访问枚举常量

java - FTP - 以编程方式确定剩余时间或传输的字节数的方法?

C# - 计算多个文件的总统计数据

python - 异常退出期间文件是否关闭?

java - 在 BouncyCaSTLe 中生成 X.509 证书时出现吊销状态未知错误

java - 为什么java接口(interface)不能包含静态方法实现?

java - 不使用 JavaFX 时使用 FXCollections 是否干净/正确

file - MATLAB如何在文本文件中写入文件头

security - 是否有一种基于 LLVM 的编程语言可以保证沙箱安全的快速二进制文件?

javascript - Jquery Ajax 安全问题