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.
Der HTTP-Header Content-Security-Policy
(CSP) form-action
-Direktive beschränkt die URLs, die als Ziel für Formularübermittlungen aus einem gegebenen Kontext verwendet werden können.
Warnung: Ob form-action
Weiterleitungen nach der Formularübermittlung blockieren sollte, ist umstritten und die Implementierungen dieser Funktion durch die Browser sind uneinheitlich (z.B. blockiert Firefox 57 die Weiterleitungen nicht, während Chrome 63 dies tut).
CSP-Version | 2 |
---|---|
Direktivtyp | Navigationsdirektive |
default-src Fallback |
Nein. Wenn dies nicht gesetzt ist, 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'
-
Es sind keine Formularübermittlungen erlaubt. 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.
Quellausdrücke werden als Schlüsselwortwerte oder URL-Muster angegeben: Die Syntax für jeden Quellausdruck ist in CSP-Quellenwerte angegeben. Allerdings gilt nur der folgende Teil dieser Werte für
form-action
:<host-source>
<scheme-source>
- der Schlüsselwortwert
'self'
.
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';"
Verletzungsfall
Die Verwendung eines <form>
-Elements mit einer Aktion, die auf inline JavaScript gesetzt ist, 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
Specification |
---|
Content Security Policy Level 3 # directive-form-action |
Browser-Kompatibilität
BCD tables only load in the browser