Riesgo A1 en OWASP - Inyección
En nuestro post Qué es OWASP y por qué todo desarrollador debería conocerlo vimos una introducción a OWASP y por qué es tan importante en el desarrollo de aplicaciones web. Dentro del proyecto TOP TEN, vamos a ahondar un poco en cada una de los diez riesgos de seguridad más críticos en aplicaciones web. Hoy es el turno del Riesgo A1 - Inyección.
Ejemplos
- Realizar una consola por ID de usuario obtenido mediante GET sin ninguna validación o sentencia preparada al motor de base de datos.
- Realizar la validación de un login de usuario si una sentencia preparada permitiendo el ingreso al atacante.
Prevención
- Se debe validar todo dato ingresado por el usuario en la aplicación del lado del cliente y del servidor.
- Todo caracter especial debe ser escapado utilizando la sintaxis de escapado específica del intérprete para que el código no se interpretado y ejecutado.
- Se deben realizar validaciones utilizando listas blancas (whitelist), en el lado del server, a nivel de servicio o aplicación detectando si código malicioso fue ingresado por el usuario.
- Se debe emplear el uso de LIMIT/TOP en SQL para minimizar la filtración de datos en caso de una inyección SQL.