No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Injection

7/15
Recursos

Aportes 4

Preguntas 0

Ordenar por:

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

La inyección, especialmente la Inyección SQL, es uno de los riesgos de seguridad más críticos y prevalentes en aplicaciones web, según el OWASP Top 10. Este tipo de vulnerabilidad ocurre cuando un atacante puede enviar o "inyectar" instrucciones no confiables a un intérprete como parte de una consulta o comando. Este proceso puede resultar en el acceso no autorizado a datos, la alteración de estos o incluso la ejecución de operaciones arbitrarias en el servidor afectado. Aunque la Inyección SQL es la forma más conocida, existen otros tipos de inyección, como la inyección de comandos del sistema operativo, la inyección LDAP, y la inyección de código en aplicaciones.
**Injection** Es el riesgo asociado a datos enviados por el usuario, no sanitizados, validados o filtrados por la aplicación. *Ejemplo* 1. Acceso inseguro a base de datos * Se debe recordar el payload, que es una cadena mal formada, cuando se utiliza el payload se puede materializar una inyección SQL, teniendo acceso a mayor cantidad de registros o información a la que no estoy autorizado. 2. Inspección no autorizada del file system * Ocurre cuando no se sanitiza la entrada de datos y permite ingresar comandos del sistema operativo por ejemplo. *Controles* 1. Sanitizar los inputs de datos de la aplicación 2. Queries parametrizadas 3. Usar LIMIT y otros controles a nivel de SQL para limitar el acceso a registros.
**¿Qué es la sanitización?** Sanitización significa limpiar y validar las entradas de los usuarios para asegurarte de que no contienen código malicioso. En el contexto de SQL, esto se hace a menudo mediante el uso de **consultas parametrizadas** o **declaraciones preparadas**. **Uso de $1 en consultas parametrizadas** En algunos lenguajes y frameworks, como Node.js con la librería pg para PostgreSQL, el símbolo $1 se utiliza para indicar un parámetro de la consulta. Este enfoque evita la inyección SQL porque el valor del parámetro se trata como un dato puro y no como parte del código SQL. $1 es un marcador de posición para el primer parámetro en la consulta. El valor de username se pasa como un array en la llamada client.query(query, \[username], ...). La librería pg se encarga de sanitizar este valor para evitar la inyección SQL. **Resumen** • **Concatenación**: No segura, puede permitir inyección SQL. • **Sanitización**: Uso de parámetros para asegurarse de que las entradas de los usuarios no se traten como código SQL. • **$1**: Un marcador de posición en una consulta parametrizada que permite sanitizar y proteger la consulta contra inyecciones SQL.
`<script\x2Ftype="text/javascript">javascript:alert(1);</script>`