Validación de la entrada de seguridad de la aplicación: validación de variables de entorno y archivos de configuración

1

Estoy viendo un video de capacitación llamado "Creación de un código J2EE seguro". El video hace esta declaración:

  

Realice todas las validaciones en un contexto seguro en el servidor. No confiar   En la validación del lado del cliente como un mecanismo de seguridad. Validar todo   entrada de la aplicación, incluida la entrada del usuario, valores de retorno API,    variables de entorno, archivos de configuración y otras aplicaciones.

Validar las variables de entorno y los archivos de configuración es un concepto nuevo para mí. ¿Puede por favor proporcionar una visión general de alto nivel de cómo podría ser esto?

Mi opinión es tratar las variables de entorno y los archivos de configuración de forma similar a la entrada del usuario. Yo lo haría:

  • Desinfectalo,
  • Longitud de prueba (mín. y máx.),
  • Rango de prueba,
  • formato de prueba
  • Tipo de prueba (int, decimal, char, etc.)

Supongo que los archivos de configuración contendrán pares clave / valor. No estoy seguro de cómo manejar un archivo de configuración que pueda contener cualquier otro formato.

¿Estoy en el camino correcto?

    
pregunta medokr 30.06.2014 - 15:01
fuente

1 respuesta

2

(esto probablemente debería ser un comentario pero es un poco detallado)

  

Validar las variables de entorno y los archivos de configuración es un nuevo concepto para mí

Al principio, esto me pareció extraño; luego recordé que no todas las aplicaciones J2EE se ejecutan en un entorno controlado. Es una cuestión de confianza. Me ocupo de las aplicaciones web en las que confío más en la configuración del entorno que en el código en sí. Aquí, esta afirmación no tiene sentido. OTOH si estuviera escribiendo una aplicación para ser ejecutada en computadoras de escritorio, entonces sospecharía un poco del sistema local.

  

Yo ... lo sanearía

No.

Validar entradas (es decir, aceptarlos o rechazarlos en su totalidad)

Desinfectar salidas (conviértalos a una representación adecuada al medio en el que van a entrar).

La desinfección de entradas es una muy mala idea. No sabes a dónde van los datos hasta que tu código los mira. Si puede llegar a su código en un estado en el que puede hacer algo inesperado (inyección de código, desbordamiento de búfer, etc.) es demasiado tarde para solucionar el problema.

    
respondido por el symcbean 30.06.2014 - 18:17
fuente

Lea otras preguntas en las etiquetas