界: 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