Làm cách nào để bảo PHP sử dụng SameSite = Không cho cookie giữa các trang?


8

Theo bài viết tại đây https://php.watch/articles/PHP-Samesite-cookies và thông tin PHP tại https://www.php.net/manual/en/session.security.ini.php , chỉ có 2 các tùy chọn cấu hình có thể cho tính năng mới này, được thêm vào trong PHP 7.3:

  1. session.cookie_samesite = Lax
  2. session.cookie_samesite = Nghiêm

Tuy nhiên, theo bảng điều khiển Chrome, điều này cần được đặt thành "Không":

Một cookie được liên kết với tài nguyên trang web chéo tại URL đã được đặt mà không có SameSitethuộc tính. Nó đã bị chặn, vì Chrome hiện chỉ cung cấp cookie với các yêu cầu trên nhiều trang nếu chúng được đặt SameSite=NoneSecure. Bạn có thể xem lại cookie trong các công cụ dành cho nhà phát triển trong Ứng dụng> Lưu trữ> Cookie và xem thêm chi tiết tại URL và URL.

Vì điều này, tôi không còn có thể thiết lập cookie chéo. Cách giải quyết là gì?

Câu trả lời:


10

Bạn có thể đặt giá trị thành "Không" bằng cách sử dụng ini_set. Không có kiểm tra xem giá trị được hỗ trợ khi chức năng đó được sử dụng:

ini_set('session.cookie_samesite', 'None');
session_start();

session_set_cookie_params cũng có thể thiết lập nó:

session_set_cookie_params(['samesite' => 'None']);
session_start();

Báo cáo lỗi cho điều này được hỗ trợ trong php.ini có ở đây .


3
Cảm ơn bạn - Tôi đã có thể sử dụng mã sau để loại bỏ thông báo Chrome và cho phép cookie giữa các trang web tiếp tục hoạt động: session_set_cookie_params (['samesite' => 'Không', 'an toàn' => đúng]);
Dane Iracleous

1
hãy cẩn thận, samesite = none không được hỗ trợ trong các trình duyệt cũ và sẽ từ chối hoàn toàn cookie. kiểm tra điều này và đảm bảo loại trừ các trình duyệt cũ khi đặt thuộc tính samesite cho cookie phiên của bạn: chromium.org/updates/same-site/incompiverse-clents
Volkan Ulukut

Đặt session.cookie_samesite = Không có trong php.ini KHÔNG hoạt động trong PHP 7.3.15. Sử dụng session_set_cookie_params như được mô tả ở trên đã hoạt động.
humbads


0

Phương pháp này có thể hữu ích cho bạn

Thêm thuộc tính tiêu đề vào nginxbên dưới Secure+SameSite=None

vị trí / {

proxy_cookie_path / "/; safe; SameSite = none";

}

Nó đang làm việc với tôi!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.