una seguridad requests por política persona insecure htaccess equiv csp content contenido bloqueado javascript security content-security-policy

javascript - requests - Cómo detectar la Política de Seguridad de Contenido(CSP)



content-security-policy wordpress (5)

¿Qué pasa con esto? Para conexiones lentas, el tiempo de espera probablemente debería aumentar. Onload es lo que solía detectarlo y parece funcionar. Si se carga, el CSP obviamente no está habilitado o está configurado incorrectamente.

var CSP = 0; frame = document.createElement(''script''); frame.setAttribute(''id'', ''theiframe''); frame.setAttribute(''src'', location.protocol+''//example.com/''); frame.setAttribute(''onload'', ''CSP=1;''); document.body.appendChild(frame); setTimeout(function(){if (0 == CSP){alert("CSP IS ENABLED");}}, 250);

Noté que GitHub y Facebook están implementando esta política ahora, lo que restringe la ejecución de scripts de terceros dentro de su experiencia / sitio.

¿Hay alguna forma de detectar si un documento se está ejecutando contra CSP utilizando JavaScript ? Estoy escribiendo un bookmarklet y quiero darle un mensaje al usuario si está en un sitio que no admite la incrustación de una etiqueta de script.


Actualmente, no hay manera de hacerlo en los navegadores de envío.

Sin embargo, algo como lo siguiente debería funcionar, según las especificaciones, y funciona en Chrome con las funciones de la plataforma web experimental habilitadas en chrome://flags/ :

function detectCSPInUse() { return "securityPolicy" in document ? document.securityPolicy.isActive : false; }

La interfaz SecurityPolicy (lo que obtiene de document.securityPolicy si se implementa) tiene algunos atributos que proporcionan más detalles sobre lo que está permitido actualmente.




Una forma fácil de detectar el soporte para CSP es simplemente verificar si el método eval () de JavaScript se puede ejecutar sin lanzar un error, como por ejemplo:

try { eval("return false;"); } catch (e) { return true; }

Sin embargo, esto solo funciona si el CSP está realmente activado (obviamente), con la Política de seguridad de contenido configurada en los encabezados de respuesta con la página cargada y sin "unsafe-eval" en script-src.

Vine aquí en busca de una manera de detectar el soporte de CSP en los navegadores sin que el CSP esté realmente activado. Parece que esto no es posible sin embargo.

En una nota lateral, IE no es compatible con CSP, solo la directiva de sandbox en IE 10+, que, al observar el estándar de CSP, no lo convierte en un navegador web compatible.