Buenas...
Yo creía que los ataques XSS eran bastante simples y sin mayor provecho que sacar, pero leyendo me di cuenta que estaba muy equivocado.
A partir del siguiente hilo:
http://foro.elhacker.net/index.php/topic,164268.0.html me surgio una idea. Esa función es efectiva pero que pasa si a alguien se le ocurren cifrar los carácteres? Por ejemplo "<" ponerlo como %3c ya no funcionaría.
Por eso pense en una función que pudiese evitar la mayor cantidad de posibles ataques XSS, es decir, los mismo carácteres pero cifrados.
Una aclaración: El código siguiente es libre de ser mejorado. Además, se hizo pensando en que cualquiera lo pudiese entender, siendo muy básico para que a uds. se les ocurran ideas. Claramente usando funciones de PHP5 quedaría reducido...
$chr = "<>,;:'.\"\\&%()#¼¾¢";
$xss = "scripting";
for ($i=0; $i<strlen($xss); $i++)
{
for ($h=0; $h<strlen($chr); $h++)
{
if (substr($xss, $i, 1) == substr($chr, $h, 1))
{
echo "Posible XSS";
exit;
}
}
}
Uso: Cambiar la variable $xss por algo como "prob<ando" y verán el mensaje.
Sería útil a la hora de evaluar un query en un buscador por ejemplo, pero si se quiere analisar un campo referido a noticias lógicamente tendría sus inconveniencias.
A ver quien es capáz de vulnerarlo...
PD1: Me gustaría leer la crítica sobre el codigo de
SirdarckcatPD2: No puse el código en las etiquetas "php" porque me transformaba algunos carácteres de la variable $chr.
Ref.:
-
http://foro.elhacker.net/index.php/topic,98324.0.html-
http://ha.ckers.org/xss.html