Situs yang Sama Skema

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 ke true melalui about: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

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.
Navigasi lintas skema dari HTTP ke HTTPS.
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.
Halaman HTTP yang menyertakan sub-resource lintas skema melalui HTTPS.
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.
Pengiriman formulir lintas skema dari HTTP ke HTTPS.
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 terhadap http://site.example/ karena skemanya tidak cocok."
  • "Cookie cookie_name telah diperlakukan sebagai lintas situs terhadap http://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 ke Lax.
  • Jika cookie Strict dan Lax diblokir dan cookie Anda dikirim ke (atau ditetapkan dari) URL aman, Anda dapat menurunkan perlindungan ke None.
    • Solusi ini akan gagal jika URL tempat Anda mengirim cookie (atau menetapkannya) tidak aman. Hal ini karena SameSite=None memerlukan atribut Secure 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.

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:// dari https://
  • Koneksi ws:// dari http://

Lintas situs:

  • Koneksi wss:// dari http://
  • Koneksi ws:// dari https://

Foto oleh Julissa Capdevilla di Unsplash