En Java es común ver códigos como System.getProperty('line.separator')
que se usa para crear cadenas utilizadas para la salida, etc. Los analizadores de vulnerabilidades han recomendado que es recomendable validar esta entrada, por ejemplo. asegurándose de que coincida con \n
o \r\n
etc.
Pero me pregunto, ya que Java es vulnerable a estos dentro de su propio PrintWriter.printLn
y posiblemente BufferedWriter.newLine()
etc., ¿es ahora una buena práctica validar System.getProperty('line.separator')
dentro de cada programa que emite estados de cuenta de nueva línea? Parece una exageración.
¿Existe alguna mejor práctica alternativa que elimine la necesidad de validar todas las propiedades del sistema? P.ej. ¿Es suficiente como práctica recomendada revisar los privilegios y comandos a nivel de administrador de sistemas en lugar de a nivel de desarrollador? Si no es así, ¿por qué los escáneres de vulnerabilidad están tomando estas precauciones ahora?
Mi impresión es que este tipo de validación a nivel de código es una exageración en un entorno de producción corporativo estándar donde existen múltiples niveles de separación de funciones y cierres de privilegios entre dev / test / prod, etc. Sin embargo, esta es solo mi opinión. y me gustaría escuchar a los demás.