💉 A1: injection
Ideas/conceptos claves
Recursos
bobby-tables.com: A guide to preventing SQL injection
https://github.com/typestack/class-validator
Apuntes
- Es una de las más conocidas y explotadas en internet
- Sucede cuando tenemos el siguiente caso
INSERT
INTO Students (Name)
VALUES ('" . $studentName . "')
- En un caso ideal el usuario haría caso dando riendas a la siguiente consulta
INSERT
INTO Students (Name)
VALUES ('"Jonas"')
- Pero, sin embargo, si un atacante aprovechara esta vulnerabilidad
- Finalizará la sentencia y aparte agregará más sentencias SQL
$studentName = "Jonas'); DROP TABLE Students; --"
- Como resultado se ejecutaría la siguiente consulta:
INSERT
INTO Students (Name)
VALUES ('"Jonas"');
DROP TABLE Students;
--
- Este problema sucedió en la vida real, no pasa únicamente en sitios, sino en cualquier entrada que recibamos en la web por parte de nuestros usuarios.
- SQL ha sido uno de los intérpretes más conocidos que existe y esto siempre ha sido una vulnerabilidad bastante atacada
- Pero puede suceder con cualquier intérprete que utilicemos en el backend
Inyección
- Datos de entrada no son válidos y son utilizados para ejecutar instrucciones
- Bases de datos SQL son comúnmente vulnerables
- noSQL, XML parsers, ORM Queries son también vulnerables
“Nunca confíes en el texto que envía el cliente”
Prevención
- Evitar usar el intérprete directamente
- Usar herramientas ORM, ej.: Prisma, TypeORM
- Siempre validar datos de entrada, ej.: class-validator
📌 **RESUMEN:** A1 injectión es cuando recibimos datos de entrada no válidos y utilizados para ejecutar instrucciones. Por este motivo no se debe confiar en los datos de entrada del cliente en caso de que esa entrada esté relacionada en realizar alguna instrucción en el código. La prevención consiste en ser consistes y emplear mecanismos para evitar dichas instrucciones Evitar usar el intérprete directamente, utilizar herramientas ORM en caso de base de datos y siempre validar los datos de entrada del cliente.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.