<?php
header("Content-Security-Policy: default-src 'sha256-".base64_encode(hash('sha256', 'console.log("Hello world");', true))."'");
?>
<script>console.log("Hello world");</script>
Sin embargo, todavía recibo en Chrome:
Se negó a ejecutar el script en línea porque viola lo siguiente Directiva de directiva de seguridad de contenido: "default-src 'sha256-1DCfk1NYWuHM8DgTqlkOta97gzK + oBDDv4s7woGaPIY =' ". O bien el La palabra clave 'unsafe-inline', un hash ('sha256 -...'), o un nonce ('nonce -...') es necesario para habilitar la ejecución en línea. Tenga en cuenta también que 'script-src' no se estableció explícitamente, por lo que 'default-src' se usa como fallback.
He jugado con esto durante más de una hora, pero todavía no puedo generar un hash que coincida con los ejemplos, por ejemplo.
enlace
Las reclamaciones <script>alert('Allowed to execute');</script>
(difícil de determinar el espaciado original) tienen un hash de sha256-MmM3YjgyNzI5MDc5NTA0ZTdiCWViZGExZDkxMDhlZWIw NDIwNzU2YWE5N2E4YWRjNWQ0ZmEyMDUyYjVkNjE0NTk=
Lo que no tiene mucho sentido: la última parte no comienza con sha256-
, pero al menos el primer hash es la longitud correcta. Obtengo sha256-nbFv/38jW7zf8mQirwFemFjDwp5CwIaorxe4Z3yycn0=
como hash para alert('Allowed to execute');
enlace
Reclamaciones:
<script>console.log("Hello world");</script>
debería tener un csp de
script-src 'sha256-y/mJvKQC/3H1UwsYAtTR7Q=='
eyeballing it, que parece demasiado corto.
¿Qué estoy haciendo mal?