Strict-origin-when-cross-origin là một chính sách an ninh trong web, nó xác định cách trình duyệt xử lý các yêu cầu tài nguyên (ví dụ: hình ảnh, tệp JavaScript) khi có sự tương tác giữa các trang web từ các nguồn khác nhau.
Khi một trang web A yêu cầu tài nguyên từ một nguồn khác (trang web B), trình duyệt sẽ áp dụng chính sách same-origin policy, nghĩa là trình duyệt chỉ cho phép tải tài nguyên từ cùng một nguồn gốc (cùng một giao thức, cùng một miền và cùng một cổng) như trang web gốc.
Tuy nhiên, trong một số trường hợp, việc giới hạn chặt chẽ này có thể gây khó khăn cho việc tương tác giữa các trang web. Do đó, một chính sách bảo mật linh hoạt hơn đã được giới thiệu và được gọi là strict-origin-when-cross-origin.
Với chính sách strict-origin-when-cross-origin, khi trang web A yêu cầu tài nguyên từ trang web B, trình duyệt sẽ chấp nhận yêu cầu và chuyển tiếp tài nguyên từ trang web B về trang web A nếu nguồn gốc của tài nguyên B được xác định là an toàn (cùng một nguồn gốc với trang web gốc). Tuy nhiên, nếu nguồn gốc không an toàn (khác nguồn gốc với trang web gốc), trình duyệt sẽ không chuyển tiếp tài nguyên và sẽ giữ nguyên yêu cầu của trang web A.
Điều này giúp ngăn chặn các cuộc tấn công Cross-Site Request Forgery (CSRF), trong đó một trang web độc hại cố gắng lừa người dùng của trang web khác để thực hiện một yêu cầu không mong muốn. Chính sách strict-origin-when-cross-origin cung cấp sự bảo vệ bổ sung bằng cách ngăn chặn truy cập vào tài nguyên từ các nguồn không an toàn khi tương tác giữa các trang web.
Chính sách Strict-origin-when-cross-origin được thiết lập bằng cách sử dụng HTTP header "Referrer-Policy" trong phản hồi HTTP của trang web.
Để thiết lập chính sách này, bạn cần thêm dòng mã sau trong phần header của phản hồi HTTP:
sqlReferrer-Policy: strict-origin-when-cross-origin
Khi trình duyệt nhận được phản hồi từ trang web chứa header này, nó sẽ áp dụng chính sách Strict-origin-when-cross-origin cho tất cả các yêu cầu tài nguyên từ các nguồn khác nhau.
Cách cụ thể để thiết lập header "Referrer-Policy" phụ thuộc vào ngôn ngữ lập trình và framework bạn đang sử dụng để phát triển trang web. Dưới đây là một ví dụ về cách thiết lập header này trong các ngôn ngữ phổ biến:
- PHP: Sử dụng hàm header() để thiết lập header trong mã PHP. Ví dụ:
phpheader("Referrer-Policy: strict-origin-when-cross-origin");
- JavaScript (Node.js): Sử dụng Express framework để thiết lập header trong mã JavaScript trên máy chủ Node.js. Ví dụ:
javascriptapp.use(function(req, res, next) {
res.setHeader("Referrer-Policy", "strict-origin-when-cross-origin");
next();
});
- Apache Server: Sử dụng tập tin .htaccess để thiết lập header trong máy chủ Apache. Ví dụ:
arduino<IfModule mod_headers.c>
Header set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
Lưu ý rằng cách thiết lập chính sách Strict-origin-when-cross-origin có thể khác nhau tùy thuộc vào môi trường phát triển của bạn. Hãy xem tài liệu hoặc tìm hiểu thêm về cách thiết lập header trong ngôn ngữ và framework bạn đang sử dụng để biết cách thích hợp nhất để áp dụng chính sách này.