domingo, 3 de febrero de 2013

Prevención de ataques XSS con PHP


Un ataque XSS (Cross Site Scripting) es una forma de atacar una web muy utilizada, el ataque en cuestión consiste en insertar código malicioso a través de los campos de formularios, unos de los efectos básicos de este ataque es la modificación del comportamiento de la web, por ejemplo si los datos no son filtrados adecuadamente, un atacante podría poner en un cuadro de búsqueda ... 

<script>window.location = "http://www.google.com";</script> 

Ocurriendo que al hacer click en submit, el atacante habrá inyectado código javascript en la página web con la consiguiente redirección a google. 

En el peor de los casos puede hacerse uso de esta herramienta para atacar la base de datos, provocar errores, robar información de otros usuarios, modificar campos y un largo sin fin. 

Por lo tanto, es conveniente y lógico filtrar los datos. Para ello existe un script PHP llamado filter input que limpia la cadena de texto de cualquier posible inyección, php ya te ofrece otras funciones como strip_tags, htmlspecialchars, htmlentities, addslashes, ... pero creo que no está de más probar esta clase y ver los resultados que te ofrece.

El script y la demo pueden ser descargado a través de ... NO_XSS.rar

 
Prevención de ataques XSS con PHP

Ejemplo de uso ...

<?php 

require_once("class.inputfilter.php");

if (isset($_POST["xss_simple"]))
{

//Filtro de datos simples
  $filtrar = new InputFilter();
  $variable_1 = $filtrar->process($_POST["xss_1"]);
  $variable_2 = $filtrar->process($_POST["xss_2"]);
}

if (isset($_POST["xss_excepciones"]))
{

//Filtro de datos con excepciones tags b | i
  $filtrar = new InputFilter(array("b", "i"));
  $variable_1 = $filtrar->process($_POST["xss_3"]);
  $variable_2 = $filtrar->process($_POST["xss_4"]);
}
?>




No hay comentarios: