Definisi "situs yang sama" berkembang untuk menyertakan skema URL, sehingga link antara versi HTTP dan HTTPS situs kini dihitung sebagai permintaan lintas situs. Upgrade ke HTTPS secara default untuk menghindari masalah jika memungkinkan atau baca terus untuk mengetahui detail nilai atribut SameSite yang diperlukan.
Situs Sama dengan Skema mengubah definisi situs (web) dari domain yang dapat didaftarkan menjadi skema + domain yang dapat didaftarkan. Anda dapat menemukan detail dan contoh selengkapnya di artikel Memahami "situs yang sama" dan "origin yang sama".
Kabar baiknya adalah: jika situs Anda sudah diupgrade sepenuhnya ke HTTPS, Anda tidak perlu khawatir. Tidak ada yang akan berubah untuk Anda.
Jika Anda belum mengupgrade situs sepenuhnya, hal ini harus menjadi prioritas.
Namun, jika ada kasus saat pengunjung situs Anda beralih antara HTTP dan
HTTPS, beberapa skenario umum tersebut dan perilaku cookie SameSite
terkait akan diuraikan nanti dalam artikel ini.
Anda dapat mengaktifkan perubahan ini untuk pengujian di Chrome dan Firefox.
- Dari Chrome 86, aktifkan
about://flags/#schemeful-same-site
. Lacak progres di halaman Status Chrome. - Dari Firefox 79, tetapkan
network.cookie.sameSite.schemeful
ketrue
melaluiabout:config
. Lacak progres menggunakan masalah Bugzilla.
Salah satu alasan utama perubahan ke SameSite=Lax
sebagai setelan default untuk
cookie adalah untuk melindungi dari Pemalsuan Permintaan Lintas Situs
(CSRF). Namun,
traffic HTTP yang tidak aman masih memberikan peluang bagi penyerang jaringan untuk
memperbarui cookie yang kemudian akan digunakan di situs versi HTTPS yang
aman. Membuat batas lintas situs tambahan ini di antara skema akan memberikan
pertahanan lebih lanjut terhadap serangan ini.
Skenario lintas skema umum
Navigasi
Menavigasi antar-versi lintas skema situs (misalnya, menautkan dari
http://site.example ke https://site.example) sebelumnya akan mengizinkan
cookie SameSite=Strict
dikirim. Hal ini kini diperlakukan sebagai navigasi lintas situs,
yang berarti cookie SameSite=Strict
akan diblokir.
![Navigasi lintas skema yang dipicu dengan mengikuti link di versi HTTP situs yang tidak aman ke versi HTTPS yang aman. Cookie SameSite=Strict diblokir, cookie SameSite=Lax dan SameSite=None; Secure diizinkan.](https://web.dev/static/articles/schemeful-samesite/image/a-cross-scheme-navigation-209071cf80318.png?authuser=8&hl=id)
HTTP → HTTPS | HTTPS → HTTP | |
SameSite=Strict
|
⛔ Diblokir | ⛔ Diblokir |
SameSite=Lax
|
✓ Diizinkan | ✓ Diizinkan |
SameSite=None;Secure
|
✓ Diizinkan | ⛔ Diblokir |
Memuat sub-resource
Setiap perubahan yang Anda buat di sini hanya boleh dianggap sebagai perbaikan sementara saat Anda berupaya mengupgrade ke HTTPS penuh.
Contoh subresource mencakup gambar, iframe, dan permintaan jaringan yang dibuat dengan XHR atau Fetch.
Memuat sub-resource lintas skema di halaman sebelumnya akan mengizinkan cookie SameSite=Strict
atau SameSite=Lax
dikirim atau ditetapkan. Sekarang, hal ini
diperlakukan dengan cara yang sama seperti sub-resource pihak ketiga atau lintas situs lainnya, yang
berarti cookie SameSite=Strict
atau SameSite=Lax
akan diblokir.
Selain itu, meskipun browser mengizinkan resource dari skema yang tidak aman untuk
dimuat di halaman yang aman, semua cookie akan diblokir pada permintaan ini karena
cookie pihak ketiga atau lintas situs memerlukan Secure
.
![Sub-resource lintas skema yang dihasilkan dari resource dari versi HTTPS aman situs yang disertakan pada versi HTTP tidak aman. Cookie SameSite=Strict dan SameSite=Lax diblokir, dan cookie SameSite=None; Secure diizinkan.](https://web.dev/static/articles/schemeful-samesite/image/a-cross-scheme-subresourc-ee291fec730b8.png?authuser=8&hl=id)
HTTP → HTTPS | HTTPS → HTTP | |
SameSite=Strict
|
⛔ Diblokir | ⛔ Diblokir |
SameSite=Lax
|
⛔ Diblokir | ⛔ Diblokir |
SameSite=None;Secure
|
✓ Diizinkan | ⛔ Diblokir |
Mengirim formulir dengan POST
Posting di antara versi lintas skema situs sebelumnya akan mengizinkan
cookie yang ditetapkan dengan SameSite=Lax
atau SameSite=Strict
untuk dikirim. Sekarang ini
diperlakukan sebagai POST lintas situs—hanya cookie SameSite=None
yang dapat dikirim. Anda mungkin
menemukan skenario ini di situs yang menampilkan versi tidak aman secara default,
tetapi mengupgrade pengguna ke versi aman saat mengirimkan formulir login atau
checkout.
Seperti sub-resource, jika permintaan berasal dari konteks aman (misalnya HTTPS) ke konteks tidak aman (misalnya HTTP), semua cookie akan diblokir pada permintaan ini karena cookie pihak ketiga atau lintas situs memerlukan Secure
.
![Pengiriman formulir lintas skema yang dihasilkan dari formulir di versi HTTP situs yang tidak aman yang dikirim ke versi HTTPS yang aman. Cookie SameSite=Strict dan SameSite=Lax diblokir, dan cookie SameSite=None; Secure diizinkan.](https://web.dev/static/articles/schemeful-samesite/image/a-cross-scheme-form-submi-528e4c1eb4c83.png?authuser=8&hl=id)
HTTP → HTTPS | HTTPS → HTTP | |
SameSite=Strict
|
⛔ Diblokir | ⛔ Diblokir |
SameSite=Lax
|
⛔ Diblokir | ⛔ Diblokir |
SameSite=None;Secure
|
✓ Diizinkan | ⛔ Diblokir |
Bagaimana cara menguji situs saya?
Alat dan pesan developer tersedia di Chrome dan Firefox.
Mulai Chrome 86, tab Masalah di DevTools akan menyertakan masalah Same-Site Schemeful. Anda mungkin melihat masalah berikut ditandai untuk situs Anda.
Masalah navigasi:
- "Bermigrasi sepenuhnya ke HTTPS agar cookie terus dikirim pada permintaan situs yang sama"—Peringatan bahwa cookie akan diblokir di Chrome versi mendatang.
- "Migrasikan sepenuhnya ke HTTPS agar cookie dikirim pada permintaan situs yang sama"—Peringatan bahwa cookie telah diblokir.
Masalah pemuatan sub-resource:
- "Migrasikan sepenuhnya ke HTTPS agar cookie tetap dikirim ke sub-resource situs yang sama" atau "Migrasikan sepenuhnya ke HTTPS agar cookie tetap diizinkan untuk ditetapkan oleh sub-resource situs yang sama"—Peringatan bahwa cookie akan diblokir di Chrome versi mendatang.
- "Migrasikan sepenuhnya ke HTTPS agar cookie dikirim ke sub-resource situs yang sama" atau "Migrasikan sepenuhnya ke HTTPS agar cookie dapat ditetapkan oleh sub-resource situs yang sama"—Peringatan bahwa cookie telah diblokir. Peringatan terakhir juga dapat muncul saat mengirim formulir dengan POST.
Detail selengkapnya tersedia di Tips Pengujian dan Proses Debug untuk Same-Site Schemeful.
Mulai Firefox 79, dengan network.cookie.sameSite.schemeful
ditetapkan ke true
melalui
about:config
, konsol akan menampilkan pesan untuk masalah Same-Site Schemeful.
Anda mungkin melihat hal berikut di situs Anda:
- "Cookie
cookie_name
segera akan diperlakukan sebagai cookie lintas situs terhadaphttp://site.example/
karena skemanya tidak cocok." - "Cookie
cookie_name
telah diperlakukan sebagai lintas situs terhadaphttp://site.example/
karena skemanya tidak cocok."
FAQ
Situs saya sudah sepenuhnya tersedia di HTTPS, mengapa saya melihat masalah di DevTools browser?
Mungkin beberapa link dan sub-resource Anda masih mengarah ke URL yang tidak aman.
Salah satu cara untuk memperbaiki masalah ini adalah dengan menggunakan HTTP Strict-Transport-Security (HSTS) dan perintah includeSubDomain
. Dengan HSTS + includeSubDomain
, meskipun
salah satu halaman Anda tidak sengaja menyertakan link yang tidak aman, browser akan
otomatis menggunakan versi aman.
Bagaimana jika saya tidak dapat mengupgrade ke HTTPS?
Meskipun kami sangat menyarankan Anda mengupgrade situs sepenuhnya ke HTTPS untuk melindungi pengguna, jika Anda tidak dapat melakukannya sendiri, sebaiknya hubungi penyedia hosting Anda untuk mengetahui apakah mereka dapat menawarkan opsi tersebut. Jika Anda menghosting sendiri, Let's Encrypt menyediakan sejumlah alat untuk menginstal dan mengonfigurasi sertifikat. Anda juga dapat menyelidiki pemindahan situs di belakang CDN atau proxy lain yang dapat menyediakan koneksi HTTPS.
Jika masih tidak memungkinkan, coba longgarkan perlindungan SameSite
pada cookie yang terpengaruh.
- Jika hanya cookie
SameSite=Strict
yang diblokir, Anda dapat menurunkan perlindungan keLax
. - Jika cookie
Strict
danLax
diblokir dan cookie Anda dikirim ke (atau ditetapkan dari) URL aman, Anda dapat menurunkan perlindungan keNone
.- Solusi ini akan gagal jika URL tempat Anda mengirim cookie (atau
menetapkannya) tidak aman. Hal ini karena
SameSite=None
memerlukan atributSecure
pada cookie, yang berarti cookie tersebut tidak boleh dikirim atau ditetapkan melalui koneksi yang tidak aman. Dalam hal ini, Anda tidak akan dapat mengakses cookie tersebut hingga situs diupgrade ke HTTPS. - Ingat, ini hanya bersifat sementara karena pada akhirnya cookie pihak ketiga akan dihentikan sepenuhnya.
- Solusi ini akan gagal jika URL tempat Anda mengirim cookie (atau
menetapkannya) tidak aman. Hal ini karena
Bagaimana pengaruhnya terhadap cookie saya jika saya belum menentukan atribut SameSite
?
Cookie tanpa atribut SameSite
diperlakukan seolah-olah menentukan
SameSite=Lax
dan perilaku lintas skema yang sama juga berlaku untuk cookie ini. Perhatikan bahwa pengecualian sementara untuk metode yang tidak aman masih berlaku. Lihat
mitigasi Lax + POST di FAQ SameSite
Chromium untuk mengetahui informasi selengkapnya.
Bagaimana pengaruhnya terhadap WebSocket?
Koneksi WebSocket akan tetap dianggap sebagai situs yang sama jika memiliki keamanan yang sama dengan halaman.
Situs yang sama:
- Koneksi
wss://
darihttps://
- Koneksi
ws://
darihttp://
Lintas situs:
- Koneksi
wss://
darihttp://
- Koneksi
ws://
darihttps://
Foto oleh Julissa Capdevilla di Unsplash