Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Content-Security-Policy : directive form-action

Baseline Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis avril 2017.

La directive HTTP Content-Security-Policy (CSP) 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 (angl.) 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
Solution de repli default-src Non, ne pas définir cette directive autorise toutes les adresses.

Syntaxe

http
Content-Security-Policy: form-action 'none';
Content-Security-Policy: form-action <source-expression-list>;

Cette directive peut avoir l'une des valeurs suivantes :

'none'

Aucune soumission de formulaire ne peut être effectuée. Les guillemets simples sont obligatoires.

<source-expression-list>

Une liste de valeurs d'expressions de source séparées par des espaces. Les soumissions de formulaire peuvent être effectuées vers des URL qui correspondent à l'une des expressions de source données. Pour cette directive, les valeurs d'expression de source suivantes sont applicables :

Exemples

Configuration avec la balise <meta>

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

Configuration avec Apache

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

Configuration avec Nginx

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

Cas de violation

Utiliser un élément HTML <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:alert('Foo')" id="form1" method="post">
  <input type="text" name="fieldName" value="fieldValue" />
  <input type="submit" id="submit" value="submit" />
</form>

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

Spécifications

Spécification
Content Security Policy Level 3
# directive-form-action

Compatibilité des navigateurs

Voir aussi