- Google Chrome tarayıcılarında yapılan güncelleme(Şubat 2020, version: 80.0) ile SameSite=None ve secure olarak tanımlanmamış cookiler varsayılan olarak sameSite=Lax(first-party cookie) kabul edilecektir.
- Bu da first-party cookielere sadece tanımlanan domain/host üzerinden ulaşılabileceği anlamına gelmektedir.
- Sitelerde cross site request olması durumunda(farklı domain üzerinden yapılan post isteği – ödeme gibi) tarayıcı üzerinde cookie erişimi güvenlik sebebiyle kısıtlanmaktadır.
- Bundan dolayı örneğin kullanıcı ödeme yapmak istediğinde PHPSESSID oturum bilgisi SameSite=None ve secure olarak işaretlenmediyse, chrome bunu default olarak SameSite=Lax olarak işaretleyecektir. Bu durumda kullanıcı ödemesini yaptıktan sonra banka tarafında Üye işyerinin sayfasına yönlendirildiğinde Oturum düşecektir.
- Çözüm önerisi olarak, İlgili cookie değerine SameSite=None ve secure flag i eklenmelidir.
1 2 |
// php7.3.0 sonrası için setcookie('PHPSESSID', session_id(), ['samesite' => 'None', 'secure' => true]); |
veya
1 2 |
// header ile çözüm header('Set-Cookie: PHPSESSID='.session_id().'; SameSite=None; Secure', false); |
Detaylı bilgi için: https://github.com/GoogleChromeLabs/samesite-examples
Kaynak:
https://github.com/GoogleChromeLabs/samesite-examples
https://www.chromium.org/updates/same-site/incompatible-clients
https://dev.iyzipay.com/tr/sss/samesite-problemi-nedir
Cookie ve Session ile ilgili detaylı bilgi için
https://www.netsparker.com.tr/blog/web-guvenligi/samesite-cookie-ayni-samesite-cookie-degil/
https://www.netsparker.com.tr/blog/web-guvenligi/http-isleyisi-ve-guvenligi-acisindan-cookie-ve-session-yonetimi/
PHP Ödeme Sonrası Oturumun Düşmesi – SameSite Problemi