1. Soalan dan Konteks
Anda menyelenggara widget sokongan yang dibenamkan oleh pelbagai laman pedagang. Ia mesti mengingati sesi pelawat untuk setiap pedagang tanpa memautkan pengguna yang sama merentasi laman peringkat teratas yang tidak berkaitan. Pelayar mungkin mengasingkan kuki, localStorage, cache dan keadaan rangkaian mengikut laman peringkat teratas dan asal pihak ketiga.
2. Perkara yang Dinilai oleh Penemu Duga
- Sama ada anda membezakan asal pihak ketiga yang dikongsi daripada petak storan yang dikongsi.
- Sama ada anda memahami skop CHIPS, atribut yang diperlukan dan semantik pengasingan.
- Sama ada anda mereka bentuk kebenaran eksplisit dan laluan sandaran untuk keadaan yang benar-benar tidak dipetakkan.
- Sama ada privasi, kebolehgunaan, pengalaman log masuk dan keserasian muncul dalam satu kerangka keputusan.
3. Soalan Penjelasan Sebelum Anda Menjawab
- Apakah yang mesti dikongsi merentasi laman peringkat teratas, dan adakah identiti dikongsi benar-benar diperlukan?
- Adakah setiap laman mempunyai sempadan penyewa, pengguna dan sesinya sendiri?
- Bolehkah pengguna mengklik sekali untuk memberi kebenaran, atau adakah widget mesti dimuatkan tanpa interaksi?
- Pelayar dan mod pembenaman manakah yang penting: iframe, pop timbul atau navigasi peringkat teratas?
4. Kerangka Jawapan 30 Saat
Jawab dengan sempadan data, lalai, pengecualian dibenarkan, sandaran dan pengesahan.
Saya akan mengehadkan skop kunci sesi kepada laman peringkat teratas dan asal widget, kemudian menggunakan kuki selamat dengan atribut Partitioned supaya setiap pedagang mendapat sesi bebas. Untuk log masuk rentas laman, saya akan menggunakan navigasi peringkat teratas untuk kebenaran eksplisit dan mengembalikan kelayakan sekali guna yang singkat; jika pelayar kekurangan keupayaan tersebut, saya akan beralih kepada mod tanpa nama dan menerangkan cara untuk log masuk. Saya akan mengesahkan pengasingan dengan pelbagai laman peringkat teratas, pembersihan data laman dan ujian akses dinafikan.
5. Penyelaman Mendalam Langkah demi Langkah
Langkah 1: Tentukan Kunci Petak dan Kelas Data
Google Privacy Sandbox menerangkan storan dan komunikasi pihak ketiga sebagai diasingkan mengikut petak. MDN menerangkan pemetakan keadaan sebagai usaha privasi pelayar yang mengurangkan penjejakan rentas laman. Kelaskan data sebagai keadaan sesi tempatan pedagang, aset yang boleh dicache secara terbuka, atau keadaan akaun yang benar-benar memerlukan identiti rentas laman. Kelas pertama tidak sepatutnya memintas pemetakan.
Langkah 2: Gunakan CHIPS untuk Sesi Setiap Laman
CHIPS membolehkan kuki pihak ketiga memilih storan yang dipetakkan. Respons harus menggunakan Partitioned; Secure dan memenuhi keperluan keselamatan kuki pelayar yang lain. Asal widget yang sama kemudiannya menerima balang kuki yang berbeza pada pedagang A dan pedagang B, jadi konteks sokongan tidak bergabung secara semula jadi merentasi laman. CHIPS menyediakan keadaan bagi setiap laman peringkat teratas, bukan log masuk rentas laman yang dikongsi.
Langkah 3: Reka Bentuk Kebenaran Eksplisit untuk Identiti Rentas Laman
Jika produk benar-benar memerlukan satu akaun kelihatan pada pelbagai laman, gunakan navigasi peringkat teratas atau Storage Access API sebagai laluan pengecualian. Storage Access API membolehkan kandungan pihak ketiga meminta keadaan yang biasanya tidak dipetakkan dan tidak boleh diakses; terangkan sebab akses diperlukan, minta pada masa yang sesuai dan sediakan laluan penafian yang berguna. Ikatkan kebenaran kepada laman peringkat teratas yang meminta, jadikan ia berjangka hayat pendek dan boleh dibatalkan.
Langkah 4: Bina Matriks Keserasian dan Privasi
Uji pelayar yang menyokong CHIPS, pelayar tanpa sokongan kuki dipetakkan, akses storan dinafikan, pembersihan data laman, berbilang laman peringkat teratas dibuka serentak, dan penggantian iframe atau navigasi diikuti dengan muat semula. Sahkan pengasingan kuki, pemulihan sesi, gesaan berulang dan sama ada mod tanpa keadaan masih melengkapkan tindakan teras.
6. Contoh Jawapan Berkualiti Tinggi
Saya terlebih dahulu akan menjelaskan sama ada widget sokongan benar-benar perlu mengenal pasti pengguna yang sama merentasi pedagang. Jawapan lalai saya adalah tidak: sesi setiap pedagang haruslah bebas kerana pemautan rentas laman menimbulkan risiko privasi dan pematuhan.
>
Pada laluan lalai, pelayan widget menetapkan kuki Partitioned; Secure. Pelayar membentuk petak storan bebas daripada laman peringkat teratas dan asal widget, jadi sesi pada pedagang A tiada pada pedagang B. Skrip dan imej statik boleh menggunakan caching biasa, tetapi identiti tidak diletakkan dalam keadaan yang boleh dibaca merentasi laman.
>
Bagi kes akaun bersatu yang tulen, saya menyediakan butang Log masuk. Ia menavigasi ke halaman peringkat teratas akaun, menyelesaikan pengesahan dan mengembalikan kod sekali guna yang berjangka hayat pendek kepada pedagang asal. Jika disokong, widget boleh meminta akses tidak dipetakkan melalui Storage Access API selepas interaksi pengguna. Jika akses dinafikan atau tidak disokong, ia beralih kepada sesi setiap laman tanpa nama dan log masuk peringkat teratas. Saya akan menguji dua laman peringkat teratas, pembersihan data satu laman dan kebenaran dinafikan untuk membuktikan tiada percampuran akaun atau gelung gesaan berulang, sambil menjejaki kadar hit petak dan kadar kegagalan log masuk.
7. Mod Kegagalan Biasa
- Menganggap CHIPS sebagai kuki rentas laman yang dikongsi dan bukannya keadaan yang dipetakkan.
- Memindahkan semua keadaan kepada akses tidak dipetakkan, memperluaskan permukaan penjejakan dan kegagalan.
- Hanya membincangkan Chrome dan melangkau Firefox, Safari, atau kegagalan pengesanan keupayaan.
- Meminta akses secara senyap semasa pemuatan iframe tanpa tindakan pengguna, penjelasan atau sandaran penafian.
- Meletakkan token berjangka hayat panjang terus dalam URL kembali, mendedahkannya kepada log, sejarah atau perujuk.
8. Soalan Susulan dan Maklum Balas
Susulan 1: Mengapa tidak meletakkan ID pengguna dalam URL laman peringkat teratas?
URL boleh memasuki log, sejarah, sistem analitik dan perujuk. Gunakan kod sekali guna yang berjangka hayat pendek dan tukarkannya di bahagian pelayan untuk sesi yang terhad.
Susulan 2: Bilakah kuki CHIPS boleh menyebabkan pengguna kelihatan seperti telah log keluar?
Lawatan pertama ke laman peringkat teratas baharu mempunyai kuki dipetakkan yang baharu. Itu adalah pengasingan yang disengajakan. Sediakan aliran log masuk peringkat teratas yang jelas dan bukannya cuba membaca kuki laman lain.
Susulan 3: Bagaimanakah anda mengekalkan fungsi teras apabila Storage Access API dinafikan?
Anggap identiti rentas laman sebagai peningkatan. Sokongan tanpa nama, kandungan bantuan dan sesi pedagang tempatan masih berfungsi; bimbing pengguna ke log masuk peringkat teratas hanya apabila data akaun sejarah diperlukan.