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.

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

Warnung: Ob form-action Weiterleitungen nach einer Formularübermittlung blockieren sollte, wird diskutiert und die Browserimplementierungen dieses Aspekts sind uneinheitlich (z.B. Firefox 57 blockiert die Weiterleitungen nicht, während Chrome 63 dies tut).

CSP-Version 2
Direktivtyp Navigationsdirektive
default-src Fallback Nein. Ohne Einstellung 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 erfolgen. Die einfachen Anführungszeichen sind obligatorisch.

<source-expression-list>

Eine durch Leerzeichen getrennte Liste von Source-Expression Werten. Formularübermittlungen dürfen an URLs erfolgen, die mit einem der angegebenen Source-Expressions übereinstimmen. Für diese Direktive sind die folgenden Source-Expression-Werte 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

BCD tables only load in the browser

Siehe auch