> Entries (RSS)
Seduccion en Linea
Mar 22

Previniendo ataques XSS con PHP Publicada por 4v4t4r en Contramedidas, Documentos seguridad .

XSS (Cross Site Scripting) es una de las vulnerabilidades web más comunes, se produce habitualmente cuando no se validan correctamente los datos ingresados por el usuario que posteriormente son mostrados en una página, permitiendo la inyección de código “no deseado” (Javascript o VBScript). No vamos a entrar en más detalles sobre esta vulnerabilidad ni en sus variantes. Nos centraremos en como prevenirla, en este caso desde PHP:

Una función muy útil en estos casos es strip_tags

Si quisiéramos por ejemplo que los usuarios de nuestra web dejen sus comentarios en un articulo por medio de un formulario, deberíamos aplicar esta función a los datos ingresados para poder mostrarlos en nuestra web. Este sería un ejemplo:

<?php
$texto=strip_tags($texto);
?>

Cabe destacar que la función strip_tags elimina también el código HTML por lo que no permitirá dar ningún tipo de formato a los datos ingresados. Si quisiéramos darle la posibilidad al usuario de utilizar alguna etiqueta, la función cuenta con un argumento mediante el cual se especifica la o las etiquetas permitidas:

<?php
$texto=strip_tags($texto, ‘<b>’);
?>

Pero hay que tener mucho cuidado con esto (Como lo advierte uno de los warnings de la página oficial de PHP) porque esta función no elimina el código incluido dentro de los atributos de las etiquetas permitidas, por lo que si el usuario introduce algo como esto:

<b onmouseover=”<script>alert(’XSS’)</script>”>Texto en Negrita</b>

El resultado, luego de que los datos pasen por la función y sean incluidos en una página web, sería el ya clásico:

Por lo que para solucionar esto, deberiamos aplicar la función preg_replace. El script quedaría de la siguiente forma:

<?php
$texto=strip_tags($texto, ‘<b>’);
$texto=preg_replace(’/<(.*)\s+ (\w+=.*?)>’, ”, $texto);
?>

Con esto solucionariamos el “pequeño” bug de la función strip_tags.

Otra opción (muy utilizada en scripts de foros) es la de permitir un pseudocodigo (por ejemplo BBCode) que luego es reemplazado por las etiquetas HTML verdaderas:

Si el usuario ingresara lo siguiente:

[b]Negrita[/b]

Reemplazariamos el BBCode por HTML para mostrarlo en pantalla (utilizando la función str_replace) y el resultado podríamos incluirlo en una página sin correr ningún riesgo:

<?php
$texto=strip_tags($texto);
$texto=str_replace(’[b]’,’<b>’);
$texto=str_replace(’[/b]’,’</b>’);
?>

Existen varios tipos de ataques que explotan la vulnerabilidad XSS, por lo que recominedo investigarla mucho mas a fondo.

Este guía es desarrollada por leo, administrador de codigo200.com

Si eres nuevo lector de La Comunidad DragonJAR y te gustan nuestros contenidos, puedes suscribirte a nuestras noticias a través del feed RSS o a través del correo, recuerda también visitar nuestra comunidad donde podrás encontrar mucha mas información. Gracias por tu visita.

Agrega tu comentario

3 comentarios para este post

  1. 01   •   raulete comenta:

    Muy buen post, deja clarito todas las cosas a tener en cuenta. Parece una tonteria pero hay que tener cuidado con estos ataques.

    Un saludo y seguid así.

  2. 02   •   Logan comenta:

    Eso es mas viejo che mejoren las cosas ! que posts sin onda suban cosas copadas
    creo que esta es mi primera vez en el año ke entro a dragonjar y va pa tras suban el nivel
    se ta poniendo aburrido y parese que son vendedores de M$
    aguante FreeBSD !

  3. 03   •   Logan comenta:

    Ey es un punto de vista no lo tomen como critica destruct
    soy de argentina y esto lo mando de un cyber bar por lo de M$ con respecto que me gustaria en dragonjar ver cursos echo por 4v4t4r sobre las posibilidades de PHP , C++ ,Perl cosas para el estilo …

Agregar un comentario



    Traducir:
  • Acerca de...

    La Comunidad DragonJAR es una comunidad de investigadores, estudiantes, profesionales y entusiastas de la Seguridad Informática.
    En la cual tratamos de darle un enfoque eminentemente práctico, sin olvidar las bases esenciales de la teoria.

    Tratando de esta manera ofrecer soluciones útiles a sus usuarios, tanto novatos-estudiantes, como a los profesionales e investigadores.
    Teniendo siempre presente que este campo de la seguridad de la información no tendrá un final, donde constantemente evolucionamos, impulsados por la sed de conocimientos