He leído en base-uri y la etiqueta de base HTML , pero ¿qué es exactamente el base-uri
CSP que debe protegerse contra?
He leído en base-uri y la etiqueta de base HTML , pero ¿qué es exactamente el base-uri
CSP que debe protegerse contra?
No pude encontrar ninguna razón oficial. Pero en general, la inyección de una etiqueta base
se puede usar en inyecciones de HTML.
Por ejemplo, considere que un atacante solo puede publicar HTML muy limitado (pero puede usar base
). Dependiendo del punto de inyección, ahora podrían secuestrar formularios existentes para enviar la información (por ejemplo, tokens CSRF, contraseñas, etc.) a su servidor.
Por supuesto, en este caso, establecer form-action
sería mejor que establecer base-uri
, pero podría no ser práctico (por ejemplo, porque los usuarios legítimos necesitan crear formularios arbitrarios).
Otro ejemplo sería un caso donde los desarrolladores no pueden o no quieren restringir desde donde se cargan los scripts. Tienen un filtro XSS instalado que impide la inyección de scripts, pero se olvidaron de filtrar base
. Un atacante ahora podría realizar XSS a través de la inyección base
HTML. Establecer un base-uri
evitaría esto.
Los ejemplos pueden parecer un poco exagerados. Pero supongo que es este tipo de casos de esquina los que las directivas deben proteger. La etiqueta base
tiene poco uso práctico (al menos en producción), ¿por qué no ofrecer la opción de limitarla?
De los documentos: enlace
El encabezado de respuesta HTTP Content-Security-Policy permite a los administradores del sitio web controlar los recursos que el agente de usuario puede cargar para una página determinada. Con unas pocas excepciones, las políticas implican en su mayoría especificar orígenes de servidor y puntos finales de script. Esto ayuda a protegerse contra los ataques de secuencias de comandos entre sitios (XSS).
¿Cómo funciona esto con base-uri? Definiría base-uri para que sea el dominio de su sitio web (es decir, example.com), esto limitaría las inclusiones a solo estar dentro del dominio de base-uri.
Como ejemplo, alguien usa un XSS para realizar una inclusión remota que carga un iframe (attacker.com/iframe.html) para robar las credenciales de los usuarios. Como eso está fuera de la base-uri, ese iframe no se cargará.
Espero que ayude.
Lea otras preguntas en las etiquetas html content-security-policy