No, porque el filtro XSS solo se ve si ve el código XSS en la entrada nuevamente en el HTML generado por su servidor.
Por ejemplo, si Chrome ve que se accede a su página web con una URL que contiene lo siguiente:
?q=<script>alert("XSS!")</script>
y si el HTML devuelto por el servidor contiene esto:
<p>You have searched for <b><script>alert("XSS!")</script>
sabe que este código es probablemente el resultado de su inclusión en la solicitud y lo neutraliza.
Sin embargo, si el código no se encuentra en la solicitud, por ejemplo, si la aplicación acepta una entrada que está codificada de alguna manera, es posible que el filtro no pueda descubrir que el código es el resultado de algún código XSS incorporado en la solicitud.
Como se ve en registro de confirmación para WebKit, hasta que recientemente se bifurcó el motor de renderizado en Chrome, intentan solucionar los desvíos más comunes, donde el código XSS en la URL y el código XSS resultante en el HTML tienen un aspecto ligeramente diferente.
Si no se aplica ninguna de estas reglas para casos especiales, el XSS no se aplicará. Por ejemplo, si no están decodificando datos codificados en Base64 en la URL, si la aplicación web acepta una entrada codificada con Base64, es posible que XSS sea una aplicación web.
Un ejemplo:
?q=PHNjcmlwdD5hbGVydCgnWFNTIScpPC9zY3JpcHQ+
( PHNjcmlwdD5hbGVydCgnWFNTIScpPC9zY3JpcHQ+
es <script>alert("XSS!")</script>
codificado en Base-64), si no se filtra, resultaría en una respuesta HTML como esta:
<p>You have searched for <b><script>alert("XSS!")</script>
Además, no evitará que XSS ocurra con datos que no están incrustados en el código HTML sin codificar, pero que JavaScript los trata de forma insegura.
Por ejemplo, considere una página que contiene el siguiente JavaScript:
eval(location.hash.substring(1))
Esto ejecutará cualquier código que siga al #
en la URL, pero Chrome no lo elimina.
↪ Puede ver este ejemplo en acción aquí
↪ Otro ejemplo, que utiliza Base64