界: Code Quality
代码质量不佳会导致不可预测的行为。对于用户来说,通常表现为可用性差。对于攻击者来说,提供了以意外方式对系统施加压力的机会。
Code Correctness: Byte Array to String Conversion
Abstract
将字节数组转换为
String
会导致数据丢失。Explanation
在将字节数组的数据转换为
示例 1:以下代码将数据转换为字符串,以便创建散列值。
如果文件的大小小于
String
后,没有说明适用字符集外的数据会发生何种变化。这会导致数据丢失,或者在需要二进制数据来确保执行正确的安全措施时,安全级别降低。示例 1:以下代码将数据转换为字符串,以便创建散列值。
...
FileInputStream fis = new FileInputStream(myFile);
byte[] byteArr = byte[BUFSIZE];
...
int count = fis.read(byteArr);
...
String fileString = new String(byteArr);
String fileSHA256Hex = DigestUtils.sha256Hex(fileString);
// use fileSHA256Hex to validate file
...
如果文件的大小小于
BUFSIZE
,只要 myFile
中的信息已编码为与默认字符集相同,此方式就会很有用。但是,如果使用不同的编码方式,或者为二进制文件,则信息将会丢失。进而导致生成的 SHA 散列值的可靠性降低,并且也将更容易产生冲突,在默认字符集外的数据由相同的值(如问号)表示时,尤其如此。References
desc.semantic.java.code_correctness_byte_array_to_string_conversion