<?php
header("Content-Security-Policy: default-src 'sha256-".base64_encode(hash('sha256', 'console.log("Hello world");', true))."'");
?>
<script>console.log("Hello world");</script>
Tuttavia, continuo a ricevere in Chrome:
Refused to execute inline script because it violates the following Content Security Policy directive: "default-src 'sha256-1DCfk1NYWuHM8DgTqlkOta97gzK+oBDDv4s7woGaPIY='". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution. Note also that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.
Ci ho lavorato per oltre un'ora ma non riesco ancora a generare un hash che corrisponda ad esempi, ad es.
link
Crediti <script>alert('Allowed to execute');</script>
(difficile determinare la spaziatura originale) ha hash di sha256-MmM3YjgyNzI5MDc5NTA0ZTdiCWViZGExZDkxMDhlZWIw NDIwNzU2YWE5N2E4YWRjNWQ0ZmEyMDUyYjVkNjE0NTk=
Il che non ha molto senso: l'ultima parte non inizia con sha256-
, ma almeno il primo hash è la lunghezza corretta. Ottengo sha256-nbFv/38jW7zf8mQirwFemFjDwp5CwIaorxe4Z3yycn0=
come hash per alert('Allowed to execute');
link
reclami:
<script>console.log("Hello world");</script>
dovrebbe avere un csp di
script-src 'sha256-y/mJvKQC/3H1UwsYAtTR7Q=='
eyeballing it, che sembra troppo corto.
Che cosa sto sbagliando?