You are on page 1of 3

ATAQUES XSS, COMO

PREVENIRLOS EN PHP

Los ataques XSS (Cross Site Scripting) suelen ser la forma ms habitual
que emplean los piratas informticos para atacar una pgina web. Para ello
se aprovechan de ciertos fallos de seguridad, sobre todo, en el filtrado y
validacin de campos de entrada. A travs de los cuales puede enviar script
o comandos maliciosos que nos afectan tanto a nuestro sitio web como al pc
del usuario que nos visita.
Un ejemplo bsico de ataque mediante XSS o inyeccin de cdigo
puede ser
http://www.ataquexss-php.com/search?p=<script>alert(Holamundo)</script>
En esta ocasin el ataque se reduce a mostrar un mensaje de alerta en el
equipo del usuario que nos visita, dado que el cdigo HTML solo se
ejecuta en el equipo del cliente no en el servidor. Este inofensivo
ataque se ha aprovechado de una vulnerabilidad en un campo de entrada,
el buscador. Podra haber sufrido un ataque ms daino, como el robo de
informacin confidencial alojada en su equipo.
Cuando desarrollamos un sitio web con PHP debemos tener cuidado con
formularios, buscadores, lugares susceptibles para poder llevar a cabo un
ataque mediante XSS. Por lo que debemos siempre verificar toda la
informacin que nos faciliten los usuarios, filtrando determinados caracteres
especiales que potencialmente pueden ser peligrosos.
Para ello PHP dispone de una serie de funciones que pueden sernos tiles a
la hora de proteger nuestra web frente a posibles ataques mediante XSS.
Hoy veremos algunas de ellas, como strip_tags o Input Filter.

Strip_tags

es una funcin que nos permite limpiar cualquier etiqueta


html que ha ingresado el usuario, de esta forma evitaremos los ataques ms
bsicos, pero frente a un ataque ms elaborado puede no ser suficiente.

PHP Input Filter

es una clase desarrollada en PHP para el filtrado del


posible cdigo malicioso que se pueda insertar a travs de un formulario.
Para poder emplear necesitamos descargar la clase de la web oficial , incluir
el archivo class.inputfilter.php al inicio y crear una instancia de la clase
InputFilter
require_once("class.inputfilter.php");
$ifilter = new InputFilter();

Veamos un ejemplo, si tenemos un formulario en nuestra web que enva los


datos por el mtodo POST, con el siguiente cdigo filtraramos todos los
campos de forma rapida y sencilla.
require_once("class.inputfilter.php");
$ifilter = new InputFilter();
$_POST = $ifilter->process($_POST);

La clase InputFilter nos da la posibilidad de permitir que ciertas


etiquetas o atributos puedan ser utilizadas por los usuarios, para ello solo
necesitamos pasarle un array con el nombre de las etiquetas o atributos
cuando creamos la instancia de la clase. Por lo que quedara de la siguiente
forma:
require_once("class.inputfilter.php");
$ifilter = new InputFilter( array(em,strong);
$ifilteraux=new InputFilter(array(a),array(href));

La instancia ifilter permitira la inclusin de las etiquetas em y strong en el


formulario, mientras que la instancia ifilteraux permitira el empleo del
atributo href para que los usuarios puedan incluir enlaces en el formulario.
Una aplicacin que puede sernos de gran utilidad es XSSploit nos
permitir localizar las vulnerabilidades de nuestra web antes de publicarla y
evitar muchos problemas en el futuro.
Por ejemplo, tenemos un sistema de comentarios en el cual slo queremos
permitir determinadas etiquetas HTML, supongamos que las etiquetas:
b,i,p,img y adems queremos permitir tan slo el atributo src para img, pues
con

input-filter

lo

vamos

poder

lograr,

en

este

caso

la

funcin strip_tags()de PHP se convierte en vulnerable, por qu?, veamos


un ejemplo:

You might also like