¿Cualquier navegador que admita script-nonce?

10

Estaba intentando incluir una secuencia de comandos en mi archivo html, pero parece que ninguno de los navegadores actuales lo admite.

¿Alguien conoce alguna versión de algún navegador que admita esta funcionalidad? Actualmente estoy usando la versión de Chrome versión 26.0.1410.63 y también probé la versión 28, pero no parece estar funcionando

Puede encontrar un archivo html de ejemplo con secuencia de comandos here

Todo lo que veo es el error en la consola de javascript, que apunta a que el navegador aún no admite script-nonce:

Unrecognized Content-Security-Policy directive 'script-nonce'
    
pregunta Jagat 28.04.2013 - 01:32
fuente

3 respuestas

8

También funciona en Chrome, pero hasta ahora (versión 26.0.1410.64 m) solo con el X-Content-Security-Policy temporal en lugar del encabezado Content-Security-Policy , como se define en los ejemplos de código ya actualizados. grupo de trabajo de W3C Web Application Security acaba de mover Content Security Policy 1.1 del borrador del grupo de trabajo anterior al estado de W3C Editor's Draft hoy, el 28 de abril de 2013 . ¿Qué posibilidades hay de eso, eh?

Supongo que Google Code se disparó ya con ejemplos de código actualizados algunos días demasiado pronto, y espero que la próxima actualización de Chrome cambie esto en consecuencia.

De todos modos, la solución se ocultaba en la huella de Copia en caché de Google de la versión anterior del borrador de CSP 1.1 :

  

Este documento describe una propuesta que ha sido discutida por el   Comunidad más amplia por cerca de dos años. Hay experimental   implementaciones en Firefox y Chrome, usando los nombres de encabezados    X-Content-Security-Policy y X-WebKit-CSP respectivamente. Internet   Explorer 10 Platform Preview también contiene una implementación parcial,   usando el nombre del encabezado X-Content-Security-Policy .

Si revisamos Google Code samples de nuevo, la diferencia en estos valores de encabezado se vuelve claramente evidente:

<meta http-equiv="Content-Security-Policy" content="script-nonce noncynonce;">

Por lo tanto, parece que todo lo que tiene que hacer (por el momento, hasta que Chrome se actualice para reflejar el cambio de estado de la propuesta de CSP 1.1) es, para cambiar el nombre del encabezado de nuevo a X-Content-Security-Policy .

También he probado estas muestras en los últimos navegadores Firefox y Opera, y ya aceptaron Content-Security-Policy y no se quejaron con los errores de la consola.

    
respondido por el TildalWave 28.04.2013 - 22:51
fuente
2

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;
    
respondido por el robocat 20.01.2014 - 03:22
fuente
1

Tidalwave ha dado una excelente respuesta.

Sin embargo, puede hacer que funcione en la versión de Chrome 28.0.1490.2 dev, después de habilitar las "Características experimentales de los kits web" en chrome: // flags. De esa manera, puede usar este sintaxis sin ninguna modificación.

Recibí esta respuesta del desarrollador de esta función en Chromium y me advirtió que la sintaxis podría cambiar en el futuro.

    
respondido por el Jagat 01.05.2013 - 05:56
fuente

Lea otras preguntas en las etiquetas