CSP:form-action

HTTP Content-Security-Policy (CSP) 的 form-action 指令限制了可用于作为给定上下文中的表单提交目标的 URL。

警告: form-action 是否应该阻止表单提交后的重定向,存在争议,并且浏览器对此方面的实现不一致(例如,Firefox 57 不会阻止重定向,而 Chrome 63 则会阻止)。

CSP 版本 2
指令类型 导航指令
default-src 回退 否。不设置此项允许任何内容。

语法

可以为 form-action 策略设置一个或多个源

http
Content-Security-Policy: form-action <source>;
Content-Security-Policy: form-action <source> <source>;

来源

<source> 可以是 CSP 源值 中列出的任何值。

请注意,这套相同的值可用于所有 获取指令(以及其他一些指令)。

示例

元标记配置

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

Apache 配置

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

Nginx 配置

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

违规情况

使用 <form> 元素,其操作设置为内联 JavaScript,会导致 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'".
-->

规范

规范
内容安全策略级别 3
# directive-form-action

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅