Sí.
Parece que script-nonce
se eliminó de la especificación, en cambio, script-src 'nonce-ABCD4321';
se supone que es la nueva sintaxis. Por lo que puedo decir, la nueva sintaxis no es compatible con Chrome 32, pero es compatible con Chrome 33 Beta.
Consulte enlace para ver una página de prueba de ejemplo.
EDIT1: Parece un parche de parpadeo enlace
elimina el soporte script-nonce
y agrega el soporte script-src 'nonce-xxx';
.
EDIT3: Última especificación .
EDIT2: Requiero absolutamente el script en línea y css porque mi aplicación web tiene un código en la página para detectar si el script incluido o los archivos fuente de css no se cargan (por ejemplo, debido a una conexión móvil no confiable). En Chrome, la creación del elemento meta funciona de forma dinámica:
<script>
var meta = document.createElement('meta');
meta.httpEquiv = 'Content-Security-Policy';
meta.content = "default-src 'none'; connect-src 'self'; img-src 'self'; style-src 'self';";
document.getElementsByTagName('head')[0].appendChild(meta);
</script>
</head>
De Política de seguridad de contenido 1.1 - Borrador de trabajo del W3C 04 de junio de 2013 :
Ejemplo 4: un sitio web que se basa en elementos de secuencia de comandos en línea desea asegurarse de que la secuencia de comandos solo se ejecute desde su propio origen, y aquellos elementos que insertó intencionalmente en línea:
Content-Security-Policy: script-src 'self' 'nonce-$RANDOM';
Los elementos de la secuencia de comandos en línea solo se ejecutarían si contuvieran un atributo nonce coincidente:
<script nonce="$RANDOM">...</script>
EDIT5: enlace tiene un ejemplo de registro de document.onsecuritypolicyviolation (evento). por ejemplo
document.onsecuritypolicyviolation = function (evt) {
console.log('Bzzp! Security violation on', evt.documentURI);
}
EDIT5 - MÁS: Chrome 33 Beta generó los siguientes detalles del evento:
blockedURI: ""
columnNumber: 0
currentTarget: document
documentURI: "http://jsbin.com/ArusOCu/1"
effectiveDirective: "script-src"
lineNumber: 0
originalPolicy: "default-src 'none'; script-src http://static.jsbin.com 'unsafe-eval' 'nonce-12345678'; connect-src 'self'; style-src http: 'unsafe-inline';"
referrer: ""
sourceFile: ""
statusCode: 200
target: document
timeStamp: 1390192192606
type: "securitypolicyviolation"
violatedDirective: "script-src http://static.jsbin.com 'unsafe-eval' 'nonce-12345678'"
__proto__: SecurityPolicyViolationEvent
[removed base Event parameters]
y los documentos dicen que se requieren las siguientes propiedades:
readonly attribute DOMString documentURI;
readonly attribute DOMString referrer;
readonly attribute DOMString blockedURI;
readonly attribute DOMString violatedDirective;
readonly attribute DOMString effectiveDirective;
readonly attribute DOMString originalPolicy;
readonly attribute DOMString sourceFile;
readonly attribute long lineNumber;
readonly attribute long columnNumber;