Content-Security-Policy: form-action Direktive
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2017 browserübergreifend verfügbar.
Die HTTP-Content-Security-Policy (CSP) form-action-Direktive beschränkt die URLs, die als Ziel von Formularübermittlungen aus einem bestimmten Kontext verwendet werden können.
Warnung:
Ob form-action Weiterleitungen nach einer Formularübermittlung blockieren sollte, wird diskutiert, und die Implementierungen dieser Funktion in Browsern sind uneinheitlich (z. B. blockiert Firefox 57 die Weiterleitungen nicht, während Chrome 63 dies tut).
| CSP-Version | 2 |
|---|---|
| Direktiventyp | Navigationsdirektive |
default-src Fallback |
Nein. Wird dies nicht festgelegt, ist alles erlaubt. |
Syntax
Content-Security-Policy: form-action 'none';
Content-Security-Policy: form-action <source-expression-list>;
Diese Direktive kann einen der folgenden Werte haben:
'none'-
Keine Formularübermittlungen dürfen durchgeführt werden. Die einfachen Anführungszeichen sind obligatorisch.
<source-expression-list>-
Eine durch Leerzeichen getrennte Liste von source expression-Werten. Formularübermittlungen dürfen an URLs gesendet werden, die mit einem der angegebenen Quellausdrücke übereinstimmen. Für diese Direktive gelten die folgenden Quellausdruckswerte:
Beispiele
>Meta-Tag-Konfiguration
<meta http-equiv="Content-Security-Policy" content="form-action 'none'" />
Apache-Konfiguration
<IfModule mod_headers.c>
Header set Content-Security-Policy "form-action 'none';"
</IfModule>
Nginx-Konfiguration
add_header Content-Security-Policy "form-action 'none';"
Verstoßfall
Die Verwendung eines <form>-Elements mit einer auf inline JavaScript gesetzten Aktion führt zu einem CSP-Verstoß.
<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'".
-->
Spezifikationen
| Spezifikation |
|---|
| Content Security Policy Level 3> # directive-form-action> |