Content-Security-Policy: form-action directive
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.
Chỉ thị form-action trong HTTP Content-Security-Policy (CSP) giới hạn các URL có thể được sử dụng làm mục tiêu gửi biểu mẫu từ ngữ cảnh nhất định.
Warning:
Liệu form-action có nên chặn các chuyển hướng sau khi gửi biểu mẫu hay không vẫn còn đang tranh luận và cách triển khai trong trình duyệt của khía cạnh này không nhất quán (ví dụ: Firefox 57 không chặn các chuyển hướng trong khi Chrome 63 thì có).
| Phiên bản CSP | 2 |
|---|---|
| Loại chỉ thị | Navigation directive |
Dự phòng default-src |
Không. Nếu không đặt chỉ thị này thì bất kỳ điều gì cũng được phép. |
Cú pháp
Content-Security-Policy: form-action 'none';
Content-Security-Policy: form-action <source-expression-list>;
Chỉ thị này có thể nhận một trong các giá trị sau:
'none'-
Không được phép gửi biểu mẫu. Dấu nháy đơn là bắt buộc.
<source-expression-list>-
Danh sách các giá trị biểu thức nguồn phân cách bằng khoảng trắng. Biểu mẫu có thể được gửi đến các URL khớp với bất kỳ biểu thức nguồn nào. Đối với chỉ thị này, các giá trị biểu thức nguồn sau đây có thể áp dụng:
Ví dụ
>Cấu hình thẻ meta
<meta http-equiv="Content-Security-Policy" content="form-action 'none'" />
Cấu hình Apache
<IfModule mod_headers.c>
Header set Content-Security-Policy "form-action 'none';"
</IfModule>
Cấu hình Nginx
add_header Content-Security-Policy "form-action 'none';"
Trường hợp vi phạm
Sử dụng phần tử <form> với thuộc tính action đặt thành JavaScript nội tuyến sẽ gây ra vi phạm CSP.
<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>
<!--
// Lỗi: Từ chối gửi dữ liệu biểu mẫu vì nó vi phạm chỉ thị
// Content Security Policy sau: "form-action 'none'".
-->
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| Content Security Policy Level 3> # directive-form-action> |