CSP : form-action

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2016.

La directive HTTP Content-Security-Policy form-action restreint les URL pouvant être utilisées comme cibles d'envoi de formulaire depuis un contexte donné.

Attention : La question de savoir si form-action doit bloquer les redirections après une soumission de formulaire est encore débattue et les implémentations des navigateurs sur cet aspect sont hétérogènes (par exemple Firefox 57 ne les bloque pas, contrairement à Chrome 63).

Version de CSP 2
Type de directive Directive de navigation
Utilisation de default-src par défaut Non, ne pas définir cette directive autorise toutes les adresses.

Syntaxe

Une ou plusieurs sources peuvent être utilisées pour cette directive :

http
Content-Security-Policy: form-action <source>;
Content-Security-Policy: form-action <source> <source>;

Sources

<source> peut être n'importe quelle valeur parmi celles énumérées dans l'article sur les valeurs sources CSP.

On notera que cet ensemble de valeurs peut être utilisé pour toutes les directives de récupération (et pour certaines autres directives).

Exemples

Configuration avec la balise <meta>

html
<meta http-equiv="Content-Security-Policy" content="form-action 'none'" />

Configuration avec Apache

xml
<IfModule mod_headers.c>
  Header set Content-Security-Policy "form-action 'none';"
</IfModule>

Configuration avec Nginx

add_header Content-Security-Policy "form-action 'none';"

Cas de violation

Utiliser un élément <form> avec un attribut action contenant un script JavaScript résultera dans ce cas en une violation de CSP :

html
<meta http-equiv="Content-Security-Policy" content="form-action 'none'" />

<form action="javascript:console.log('toto')" id="form1" method="post">
  <input type="text" name="nomChamp" value="valeurChamp" />
  <input type="submit" id="submit" value="Envoyer" />
</form>

<!--
Error: Refused to send form data because it violates the following
Content Security Policy directive: "form-action 'none'".
-->

Spécifications

Specification
Content Security Policy Level 3
# directive-form-action

Compatibilité des navigateurs

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
form-action
Redirects are blocked after a form submission
Non-standard

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Non-standard. Check cross-browser support before using.

Voir aussi