Como también comentamos, esto podría resultar por parte de algún usuario mal intencionado, en que nuestra base de datos podía plagarse de datos «no deseados», como por ejemplo, texto en campos puramente numéricos, o direcciones de email no válidas.
¿Aquí queda todo? NO.
¿Qué es el ataque de inyección de código JavaScript?
Lo vamos a explicar con un pequeño «juego»:
El siguiente código php, muestra un formulario y lista los usuarios ya almacenados en la base de datos:
El problema, como veréis en el código, es que al no validar los datos en servidor, podéis introducir como nombre lo que querais:
<?php include('db_conection.php'); if(!empty($_POST['nombre'])) mysql_query('INSERT INTO `js_injection`(`nombre`) VALUES ("'.$_POST['nombre'].'")'); $request = mysql_query('select * from `js_injection`'); ?> <html> <body> <h2>Listado</h2> <ul> <?php while($row = mysql_fetch_array($request)){?> <li><?php echo $row['nombre']; ?></li> <?php } ?> </ul> <h2>Registrate</h2> <form method="post"> Registra tu nombre:<input name="nombre" type="text"/> <input type="submit"/> </form> </body> </html>
Por tanto, si algún gracioso se diera cuenta de ello, podría literalmente cargarse nuestra página:
Vamos a intentar introducir el siguiente código JavaScript en el campo de texto nombre:
<script>while(true) alert('atacke js injection');</script>
Al imprimir la lista de nombres desde PHP, el código resultante incluye un bucle infinito que muestra todo el tiempo una ventana, y el navegador interpreta y ejecuta perfectamente al tratarse de código JavaScript.
Ahora la página ha quedado bloqueada y lista para no poder ser usada.
Este tipo de ataque puede dar mucho de si. ¿Os imagináis que podría ocurrir si pudiéramos hacer que se ejecutara el código JavaScript que deseemos en una zona privada de una web?
Ampliaré en futuros artículos más información sobre este tema, y sobre otro tipo de inyecciones.
Saludos y gracias.
Escribir un comentario