![](/img/trans.png)
[英]create temp file using utils in java not using : java.io.File.createTempFile()
[英]Veracode Insecure Temporary File error when using java.io.File.createTempFile
我需要創建一個臨時文件並將一些數據存儲到其中。 為此,我編寫了以下代碼:
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 中進行靜態掃描,它們仍會將其顯示為錯誤,因為它們會導致 Java 版本低於 6 的易受攻擊的問題。如果您使用更高版本,則沒問題。 跳過它..
來自veracode的參考: https ://www.veracode.com/blog/2009/01/how-boring-flaws-become-interesting
我認為該問題已在 Java 6 Update 11 版本中解決。 使用最新版本的 Java。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.