Je crois en votre question que vous vous contredisez.
Comment puis-je autoriser javascript:void(0)
à utiliser dans l'élément HTML attributs par Content-sécurité-politique?
D'une part, vous définissez un en-tête Content Security Policy (CSP) auquel vous spécifiez une règle que je devine est script-src
. Une directive utilisée pour empêcher l'exécution de scripts en ligne. Par contre, vous voulez le contourner et exécuter le javascript en ligne.
L'en-tête ne fonctionne-t-il pas comme prévu? L'ajout de 'unsafe-inline'
le contournera, mais annule l'idée de ne pas autoriser les styles en ligne et les scripts en ligne (l'un des gains de sécurité les plus importants fournis par CSP).
Vous pouvez utiliser une source nonce pour autoriser uniquement des blocs de script en ligne spécifiques.
Exemple:
Content-Security-Policy: script-src 'nonce-2726c7f26c'
Remarque, vous devrez régler le même sur l'élément nonce aussi bien.
<script nonce="2726c7f26c">
var inline = 1;
</script>
Pour votre cas en utilisant les formulaires, l'en-tête serait:
Content-Security-Policy: form-action 'nonce-<value>'
Vous pouvez également créer hash de vos scripts en ligne. CSP supporte sha256, sha384 et sha512.
Exemple:
Content-Security-Policy: script-src 'sha256-076c8f1ca6979ef156b510a121b69b6265011597557ca2971db5ad5a2743545f'
Notez que lors de la génération du hachage, ne comprennent pas les balises et notez que la capitalisation et la matière des espaces, y compris avant ou arrière des espaces.
<script>var inline = 1;</script>
Pourquoi ne pas utiliser 'href =" # "'? – Barmar
Parce qu'il sauterait au sommet de la page si ce n'est pas empêché. – Stephan
Il est probablement préférable de s'assurer que n'importe quelle branche de votre gestionnaire empêche l'action plutôt que de mettre cette action/href là. – apokryfos