Reino: Code Quality
Una mala calidad del código lleva a un comportamiento no predecible. Desde la perspectiva de un usuario, muchas veces también supone una usabilidad limitada. Pero para un atacante es una oportunidad para atacar al sistema de formas insospechadas.
Code Correctness: Byte Array to String Conversion
Abstract
Convertir una matriz de byte en
String
puede suponer una pérdida de datos.Explanation
Cuando los datos de una matriz de bytes se convierten en
Ejemplo 1: el siguiente código convierte los datos en una cadena para crear un hash.
Si el tamaño del archivo es menor que
String
, no se especifica lo que ocurrirá con los datos que quedan fuera del conjunto de caracteres correspondiente. Esto puede suponer una pérdida de datos o una disminución en el nivel de seguridad cuando se necesitan datos binarios para garantizar que se cumplen las medidas de seguridad apropiadas.Ejemplo 1: el siguiente código convierte los datos en una cadena para crear un hash.
...
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
...
Si el tamaño del archivo es menor que
BUFSIZE
, funcionará siempre y cuando la información de myFile
se encuentre codificada igual que el conjunto de caracteres predeterminado. Sin embargo, si utiliza una codificación diferente o es un archivo binario, se perderá información. A su vez, esto provocará que el hash de SHA resultante no sea de confianza y que sea más fácil causar conflictos, especialmente si hay algún dato fuera del conjunto de caracteres predeterminado que se represente con el mismo valor, como un signo de interrogación.References
desc.semantic.java.code_correctness_byte_array_to_string_conversion