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

鈥淣unca 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