Prevenir XSS en PHP

Realizar un ataque XSS (Cross Site Scripting) aprovechando alguna vulnerabilidad no suele ser excesivamente complicado. Lo más complejo del proceso es llegar a encontrar la variable de entrada no filtrada, que permite la ejecución del código javascript. Puesto que nuestro interés es evitar que nuestra web se vea comprometida por un ataque XSS tenemos siempre que controlar las variables de entrada que obtenemos.
Si empleamos frameworks como Joomla, Drupal, etc. generalmente ya tienen sus módulos de comprobación que intentan, en la medida de lo posible, filtrar los posibles valores de entrada. En caso de que optes por programar en PHP "a pelo", lo mejor es que conozcas, y bien, la clase PHP Input Filter. Esta clase es la que se encarga de filtrar, y por lo tanto limpiar, todo el código malintencionado que alguien pueda meter en un formulario de entrada.
Su uso es muy sencillo, y únicamente tendremos que incluirla en nuestro código PHP. Una vez la tengamos incluida, podremos crear un InputFilter, que será el encargado de limpiar la variable del formulario y dejar los valores correctos en la variable PHP empleada. Un ejemplo rápido,
require_once("class.inputfilter.php");

$filter = new InputFilter();
$var = $filter->process($_POST['variable']);
La idea de emplear esta clase PHP es simplemente que una entrada como esta,
<script>window.location = "http://www.google.com";</script>
Tenga un valor real así,
resultado: window.location = "http://www.google.com";
Por defecto el InputFilter filtra todo tipo de datos de entrada, pero podemos indicarle que determinadas etiquetas puedan pasar, como es el caso de a o href. Para ello, cuando creamos la nueva clase,
...
$filter = new InputFilter(array('a'), array('href'));
...

La entrada, Prevenir XSS en PHP la puedes leer en Puppet Linux.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios