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>;
来源
示例
元标记配置
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 表格仅在浏览器中加载