Curso Acelerado de Seguridad - Episodio 3: XSS

Este artículo fue escrito por Damien Metzger, y publicado por primera vez en el blog de PrestaShop, el 28 de septiembre de 2011.

Sería erróneo suponer que usted necesita el acceso al código de un sitio web para poder hackearlo. De hecho, incluso en el nivel de visualización de HTML, usted necesita proteger todos los datos que aparecen.

Un defecto de XSS consiste en la explotación de la interpretación del navegador de HTML / Javascript cuando se muestran datos Si muestra datos no protegidos en la página- es decir, sin cuidar para convertir los caracteres que están siendo interpretados - el navegador será capaz de interpretar las variables que son mostradas como HTML o Javascript.

Ejemplo.

Página :

<html> <body> No results were found for the keyword $keyword.</body> </html>

Explotación :
Sólo tiene que ingresar la cadena de caracteres siguiente como una palabra clave:

<script type="text/javascript">alert('kikoo');</script>

Resultado:
Una alerta "kikoo" aparecerá en la página.

Por supuesto, que se puede hacer mucho más que agregar una alerta en Javascript, también se puede redirigir al usuario a otra página web, robar las cookies y mucho más.

¿Cómo puede protegerse?

Esto no es muy complicado: todo lo que aparece en las páginas HTML debe ser protegido con una función como htmlspecialchars() o htmlentities(). En algunos casos, también puede utilizar funciones adicionales, tales como strip_tags() la cual elimina todas las etiquetas HTML de una cadena de caracteres o unas simples addslashes() si está trabajando en Javascript.

La verdadera dificultad no pasa por protegerse a sí mismo, sino recordar hacerlo siempre. Las principales razones para olvidarse de esto son: