X-XSS-Protection header
Non-standard: This feature is not standardized. We do not recommend using non-standard features in production, as they have limited browser support, and may change or be removed. However, they can be a suitable alternative in specific cases where no standard option exists.
Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.
Warning:
Mặc dù tính năng này có thể bảo vệ người dùng của các trình duyệt web cũ không hỗ trợ CSP, trong một số trường hợp, X-XSS-Protection có thể tạo ra lỗ hổng XSS trong các trang web khác an toàn.
Xem phần Cân nhắc bảo mật bên dưới để biết thêm thông tin.
Tiêu đề HTTP X-XSS-Protection response header là tính năng của Internet Explorer, Chrome và Safari đã ngừng tải trang khi phát hiện các cuộc tấn công cross-site scripting (XSS) được phản chiếu.
Các bảo vệ này phần lớn là không cần thiết trong các trình duyệt hiện đại khi các trang web triển khai Content-Security-Policy mạnh mẽ vô hiệu hóa việc sử dụng JavaScript nội tuyến ('unsafe-inline').
Nên sử dụng Content-Security-Policy thay vì lọc XSS.
| Loại tiêu đề | Response header |
|---|
Cú pháp
X-XSS-Protection: 0
X-XSS-Protection: 1
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report=<reporting-uri>
Chỉ thị
0-
Tắt lọc XSS.
1-
Bật lọc XSS (thường là mặc định trong các trình duyệt). Nếu phát hiện cuộc tấn công cross-site scripting, trình duyệt sẽ làm sạch trang (xóa các phần không an toàn).
1; mode=block-
Bật lọc XSS. Thay vì làm sạch trang, trình duyệt sẽ ngăn hiển thị trang nếu phát hiện cuộc tấn công.
1; report=<reporting-URI>(chỉ Chromium)-
Bật lọc XSS. Nếu phát hiện cuộc tấn công cross-site scripting, trình duyệt sẽ làm sạch trang và báo cáo vi phạm. Điều này sử dụng chức năng của chỉ thị CSP
report-uriđể gửi báo cáo.
Cân nhắc bảo mật
>Lỗ hổng do lọc XSS
Hãy xem xét đoạn mã HTML sau cho trang web:
<script>
var productionMode = true;
</script>
<!-- [...] -->
<script>
if (!window.productionMode) {
// Some vulnerable debug code
}
</script>
Mã này hoàn toàn an toàn nếu trình duyệt không thực hiện lọc XSS. Tuy nhiên, nếu có và truy vấn tìm kiếm là ?something=%3Cscript%3Evar%20productionMode%20%3D%20true%3B%3C%2Fscript%3E, trình duyệt có thể thực thi các script trong trang bỏ qua <script>var productionMode = true;</script> (nghĩ rằng máy chủ đã bao gồm nó trong phản hồi vì nó có trong URI), gây ra window.productionMode được đánh giá là undefined và thực thi mã gỡ lỗi không an toàn.
Đặt tiêu đề X-XSS-Protection thành 0 hoặc 1; mode=block ngăn chặn các lỗ hổng như được mô tả ở trên. Cái trước sẽ làm cho trình duyệt chạy tất cả script và cái sau sẽ ngăn trang không được xử lý (mặc dù cách tiếp cận này có thể dễ bị tấn công side-channel nếu trang web có thể được nhúng trong <iframe>).
Ví dụ
Chặn các trang khỏi tải khi phát hiện các cuộc tấn công XSS được phản chiếu:
X-XSS-Protection: 1; mode=block
PHP
header("X-XSS-Protection: 1; mode=block");
Apache (.htaccess)
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
</IfModule>
Nginx
add_header "X-XSS-Protection" "1; mode=block";
Đặc tả
Không phải là một phần của bất kỳ đặc tả hoặc bản thảo nào.