Sé que esta pregunta fue discutida en la red varias veces. y la gente da algún ejemplo de cómo omitir estas funciones pasando un código. Pero aquí hay un problema: todo ejemplo de htmlentities / htmlspecialchars se relaciona cuando lo insertamos como valor de atributo como
<a href="" title="<?php echo htmlentities([XSS_CODE]) ?>"></a>
O
<img onerror="<?php echo htmlentities([XSS_CODE]) ?>" />
Pero si necesito mostrar los datos como contenido como se muestra a continuación.
<div><?php echo htmlentities([XSS_CODE]) ?></div>
Cómo podría ser inseguro. Como el código no tendrá activadores / eventos como en el caso de los atributos, esto debería ser seguro en todos los casos.
Estudié enlace . Casi todos los ejemplos de omisión de ataque / filtro XSS no funcionan para un caso determinado. Probé el valor codificado hexadecimal de < &erio; > como se indica en el último párrafo de url, pero nuevamente fracasó y se mostró simplemente como datos.
Realmente tengo dudas sobre enlace que tienen una combinación que no se maneja con htmlentities como \ x3c, \ u003c,% 3C. Mientras que yo mismo soy incapaz de producirlos y explotarlos usándolos.
Probé un ejemplo como
$code = "\x3cstrong\x3eHello World\x3\cstrong\x3e";
// OR
$code = "\u003cstrongu003eHello Worldu003c\cstrongu003e";
<div><?php echo htmlentities($code); ?></div>
Nota: Probé todos los ataques en Firfox 40 en la máquina Ubuntu.