Conceptos básicos para una web segura
En esta sección vamos a poner algunos casos de cómo tener una web lo más segura posible a ataques informáticos con propósitos de hacernos caer la web o de tomar datos para uso propios
Uno de ellos es los ataques XSS (Cross-site Scripting) que consisten en inyecciones de código ( en algún lenguaje informático como java ) normalmente haciendo uso de un formulario. Estos ataques ocurren porque los programadores no blindan el código. Veremos en qué consiste y como evitar que ocurra.
¿Cómo se ejecuta el ataque XSS?
Tenemos el siguiente código html de un formulario:
1
2
3
4
|
< form action = "envio.php" method = "post" > < input type = "text" name = "mi_comentario" value = "" > < input type = "submit" name = "enviar" value = "Mandar Solicitud" > </ form > |
En éste código html tenemos una primera línea que nos dice que se trata de un formulario (form) y que será enviado al archivo envio.php, que va a «recoger » los datos enviados desde el campo mi_comentario. Los datos pueden ser guardados en alguna base da datos o bien enviados directamente a nuestro correo.
Para simplificar la idea, vamos a hacer que el archivo envio.php muestre en pantalla lo que hemos enviado.
1
2
3
|
<?php echo $_POST [ 'mi_comentario' ]; ?> |
Este archivo está escrito en el lenguaje de programación php y dice cada línea
- 1º
<?php
( para indicar que se trata de un php - echo es la etiqueta para mostrar en pantalla y $_POST es la variable que se va a mostrar , en este caso es la variable del campo del formulario mi_comentario
- ?> para indicar que se ha cerrado el archivo php
Ahora hacerlo en vuestra web. Cuando lo tengamos , subirlo a internet y escribir esto en el campo que aparece
<
script
>alert('Tu página ha sido hackeada. Escribenos a micorreo@elhacker.net para ... ');</
script
>
Esta función elimina las etiquetas HTML y PHP de un str
dado.
En nuestro caso, hacemos lo siguiente
<?php
// Saneando el HTML
$mi_comentario
=
strip_tags
(
$_POST
[
'mi_comentario'
]);
?>
Con ello hemos dado el primer paso para que desde un formulario sólo llegue texto, eliminando elementos de código que pueden dar problemas a nuestra web.
Comprobar cómo queda. Mas Información en
http://www.funcion13.com/2012/10/15/entiende-ataques-xss-aprende-prevenir-php/
Injection SQL con sentencia ‘or’1’=’1
Con este sistema conseguimos «modificar la consulta SQL en nuestro provecho. Me explico.
Cuando nos logeamos en una web, se toma los datos de login y de password , se meten en una consulta sql ( para la base de datos que tengamos ) y se hace la consulta, mostrando los resultados.
Normalmente hay comparaciones del tipo ( si el usuario es = al que tengo almacenado y la contraseña es = a la almacenada, entramos )
¿ Que pasa si hacemos la consulta si el usuario es = al usuario almacenado 0 1=1 .. ) entramos ?. Que tontería lo de 1 = 1, pero lo cierto es que se compara y se entra
La consulta que se hace a la base de datos sería una cosa como esta
SELECT * FROM Usuarios WHERE Nombre=’1′ OR ’1′ = ’1′ AND Clave =’1′ OR ’1′ = ’1′
Que quiere decir, seleccionamos (select) todos los datos (*) de la tabla usuarios donde (where) el nombre es (campo vacío ) o 1=1 y (AND ) la clave es (vacía ) o (OR) 1=1
Para conseguir este engaño a la base de datos ponemos ‘or’1’=’1 tanto en el campo login como en la password
Probamos en algunas webs a ver si son vulnerables.
BAJO NINGÚN CONCEPTO USAMOS ESTOS CONOCIMIENTOS PARA DAÑAR O PERJUDICAR EL TRABAJO DE LOS PROGRAMADORES
Localizar webs vulnerables y escribirles que tienen esta vulnerabilidad. Para ello buscamos login.asp en google
mas información sobre Sql Inyections en www.unixwiz.net/techtips/sql-injection.html