我在Java代码中从veracode获取信息泄露。 这是我的代码:
// read file and write it into form...
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
dos.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
缺陷就是这条线:dos.write(buffer, 0, bufferSize);
有人可以帮助我吗?
答案 0 :(得分:2)
您应该拨打.write(buffer, 0, bytesRead)
而不是.write(buffer, 0, bufferSize)
。 .read
操作可能不会读取bytesSize
个字节,而是可能会读取较小的块。
答案 1 :(得分:1)
我认为问题在于写入/读取是否会引发异常 - 这可能会显示出比Veracode想要的更多信息。 Security: CWE-201: What is the correct way to securely read a properties file using openStream?显示了如何包装IO代码 - 这可能会有所帮助。