Seguridad Web

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
  2. 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
  3. ?> 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>
Como puedes comprobar la situación es preocupante porque alguien ha conseguido que se ejecute un código en nuestra web. Este no inocente y la web no ha sido hackeada pero podemos subir otros códigos que nos pueden causar ciertos problemas
Para resolverlo usaremos la instrucción strip_tags.

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