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 April 2017.

Die HTTP-Content-Security-Policy (CSP) form-action-Direktive beschränkt die URLs, die als Ziel für Formularübermittlungen von einem bestimmten Kontext verwendet werden können.

Warnung: Ob form-action Weiterleitungen nach einer Formularübermittlung blockieren sollte, ist umstritten und die Implementierungen in den Browsern sind in diesem Aspekt inkonsistent (z.B. blockiert Firefox 57 die Weiterleitungen nicht, während Chrome 63 dies tut).

CSP-Version 2
Direktivtyp Navigationsdirektive
default-src Rückfall Nein. Wenn dies nicht gesetzt ist, ist alles erlaubt.

Syntax

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

Diese Direktive kann einen der folgenden Werte haben:

'none'

Es dürfen keine Formularübermittlungen vorgenommen werden. Die einfachen Anführungszeichen sind zwingend erforderlich.

<source-expression-list>

Eine durch Leerzeichen getrennte Liste von Quellausdruckswerten. Formularübermittlungen dürfen zu URLs erfolgen, die mit einem der angegebenen Quellausdrücke übereinstimmen. Für diese Direktive sind die folgenden Quellausdruckswerte anwendbar:

Beispiele

Meta-Tag-Konfiguration

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

Apache-Konfiguration

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

Nginx-Konfiguration

nginx
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 einer CSP-Verletzung.

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'".
-->

Spezifikationen

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

Browser-Kompatibilität

Siehe auch