如何防止在Java中发现“Validation.EncodingRequired”
最近,我使用AppScan源扫描编码,它发现了一个我不知道如何修复并传递给扫描仪的发现,或者是一个假警报 这是我的密码如何防止在Java中发现“Validation.EncodingRequired”,java,security,Java,Security,最近,我使用AppScan源扫描编码,它发现了一个我不知道如何修复并传递给扫描仪的发现,或者是一个假警报 这是我的密码 public static void copyFileUsingFileStreams(File source, File dest) throws IOException { InputStream input = null; OutputStream output = null; try { input = new
public static void copyFileUsingFileStreams(File source, File dest)
throws IOException
{
InputStream input = null;
OutputStream output = null;
try
{
input = new FileInputStream(source);
output = new FileOutputStream(dest);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) > 0) {
output.write(buf, 0, bytesRead); //Scanner reported that's a vulnerability in API OutputStream.write()
}
}
finally
{
input.close();
output.close();
}
}
我觉得不错。如果您正在写入字节,则不需要编码。如果你在写人物,那就不同了 也就是说,您确实应该将流包装在缓冲版本中:
output = new BufferedOutputStream(new FileOutputStream(dest));
同样地,对于输入也是如此。这不会影响与编码有关的任何内容,但会使文件I/O更加高效
您还应该更改finally块:
当您开始捕获并处理IOException时(这是您应该做的),如果在创建流时出现任何问题,您将面临NullPointerException的风险。感谢chiastic解释这一问题:-
finally
{
if (input!=null)
input.close();
if (output!=null)
output.close();
}