Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

1D
5H
58M
14S

A1: injection

2/13
Recursos

Aportes 2

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

💉 A1: injection

Ideas/conceptos claves

Recursos

bobby-tables.com: A guide to preventing SQL injection

https://www.prisma.io/

TypeORM - Amazing ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, WebSQL databases. Works in NodeJS, Browser, Ionic, Cordova and Electron platforms.

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.

Excelente explicacion gracias