Teknologi, AI, internet, dan keamanan digitalKunjungi Nazuaf.com ↗
NNazuaf.
Keamanan Siber

Storage Access API: Memberi Akses Cookie Pihak Ketiga dengan Persetujuan

Pelajari cara Storage Access API membantu iframe meminta akses cookie lintas situs secara terbatas, dengan alur persetujuan, fallback, dan pengujian keamanan.

Redaksi Nazuaf··5 menit
Storage Access API: Memberi Akses Cookie Pihak Ketiga dengan Persetujuan

Widget pembayaran, sistem masuk tunggal, komentar, atau layanan pelanggan kadang ditampilkan di dalam <iframe> yang berasal dari domain berbeda. Ketika browser membatasi cookie pihak ketiga demi privasi, komponen seperti ini bisa kehilangan sesi yang sebelumnya dipakai untuk mengenali pengguna. Storage Access API menyediakan mekanisme agar konten tersemat dapat meminta akses ke cookie pihak ketiga yang tidak dipartisi, jika browser dan kebijakan privasi mengizinkannya.

API ini bukan jalan pintas untuk melewati perlindungan browser. Tujuannya adalah menangani kebutuhan yang sah melalui izin yang terikat pada konteks tertentu, bukan mengembalikan pelacakan lintas situs secara bebas.

Apa itu Storage Access API?

Storage Access API adalah antarmuka browser untuk konten lintas situs yang dimuat di dalam iframe. Dua metode yang umum digunakan adalah document.hasStorageAccess() untuk memeriksa apakah konteks saat ini memiliki akses, dan document.requestStorageAccess() untuk meminta akses ketika diperlukan.

Misalnya, situs toko menyematkan halaman masuk dari penyedia identitas. Halaman tersebut mungkin membutuhkan cookie sesi miliknya sendiri agar pengguna tidak perlu masuk berulang kali. Karena iframe berada di konteks pihak ketiga, browser dapat menahan cookie itu sampai syarat akses dipenuhi. Keputusan akhir tetap berada pada browser dan dapat dipengaruhi interaksi pengguna, pengaturan privasi, riwayat interaksi dengan situs, serta kebijakan browser tertentu.

Bagaimana alur permintaannya?

Implementasi yang baik dimulai dengan memeriksa akses yang sudah tersedia. Jika akses belum ada, iframe menampilkan tombol yang menjelaskan manfaat permintaan tersebut. Pemanggilan requestStorageAccess() umumnya perlu dilakukan sebagai respons langsung terhadap tindakan pengguna, seperti klik atau ketukan. Permintaan otomatis saat halaman baru dibuka dapat ditolak karena tidak memiliki aktivasi pengguna.

  1. Konten iframe dimuat dengan perilaku cadangan yang tidak bergantung pada cookie pihak ketiga.
  2. Halaman memeriksa akses menggunakan hasStorageAccess() jika metode tersebut tersedia.
  3. Jika sesi membutuhkan cookie yang diblokir, pengguna diberi penjelasan dan pilihan untuk meminta akses.
  4. Browser menilai permintaan berdasarkan aturan dan kebijakan yang berlaku; hasilnya bisa diterima atau ditolak.
  5. Setelah akses diberikan, iframe biasanya perlu dimuat ulang agar permintaan jaringan berikutnya dapat memakai cookie yang diizinkan.

Persetujuan pada satu konteks tidak berarti semua iframe atau semua situs otomatis mendapat akses. Pengembang harus menguji perilaku pada kombinasi situs induk, domain tersemat, dan browser yang benar-benar digunakan pengunjung.

Contoh JavaScript yang menangani kegagalan

Contoh berikut memperlihatkan pola dasar untuk tombol permintaan akses. Elemen dengan ID storage-status menampilkan hasil kepada pengguna. Dalam aplikasi nyata, teks tombol dan pesan perlu disesuaikan dengan fungsi iframe.

const button = document.querySelector("#allow-storage");
const status = document.querySelector("#storage-status");

button.addEventListener("click", async () => {
  try {
    if (typeof document.hasStorageAccess === "function" &&
        await document.hasStorageAccess()) {
      status.textContent = "Akses penyimpanan sudah tersedia.";
      return;
    }

    if (typeof document.requestStorageAccess !== "function") {
      status.textContent = "Browser tidak mendukung permintaan ini.";
      return;
    }

    await document.requestStorageAccess();
    status.textContent = "Izin diberikan. Memuat ulang sesi…";
    window.location.reload();
  } catch (error) {
    status.textContent =
      "Akses tidak diberikan. Gunakan pilihan masuk alternatif.";
  }
});

Contoh ini sengaja tidak menganggap izin selalu berhasil. Aplikasi harus tetap berfungsi ketika metode tidak tersedia, browser menolak permintaan, atau pengguna memilih untuk tidak memberikan akses.

Kapan API ini layak digunakan?

Storage Access API dapat membantu layanan autentikasi yang disematkan, sistem langganan yang perlu mengenali sesi, atau widget yang bergantung pada status akun lintas halaman. Namun, kebutuhan tersebut perlu dibuktikan terlebih dahulu. Jika konten cukup bekerja dengan data lokal yang dipisahkan per situs, akses cookie tanpa partisi mungkin tidak diperlukan.

Untuk widget yang hanya perlu menyimpan preferensi atau status terpisah pada setiap situs induk, pertimbangkan CHIPS dan partitioned cookies. CHIPS memisahkan cookie berdasarkan situs tingkat atas, sedangkan Storage Access API menangani permintaan akses ke penyimpanan pihak ketiga yang tidak dipartisi. Keduanya menyelesaikan kebutuhan berbeda dan tidak seharusnya dipertukarkan tanpa menilai model datanya.

Pengamanan yang perlu diperhatikan

  • Batasi tujuan akses. Minta izin hanya ketika fitur memang membutuhkannya; jangan gunakan akses sebagai sarana membuat profil lintas situs.
  • Jelaskan kepada pengguna. Terangkan fungsi yang tidak akan berjalan tanpa izin, dan sediakan pilihan yang masuk akal jika pengguna menolak.
  • Amankan cookie. Tinjau atribut Secure dan SameSite, masa berlaku, rotasi sesi, serta perlindungan terhadap pencurian token. API ini tidak menggantikan pemeriksaan otorisasi server atau mitigasi CSRF.
  • Periksa iframe sandbox. Iframe yang disandbox mungkin memerlukan token allow-storage-access-by-user-activation serta izin terkait skrip dan origin. Jangan melonggarkan sandbox tanpa menilai risikonya.
  • Batasi domain. Terapkan kebijakan konten dan izin iframe secara spesifik. Jangan menyematkan sumber yang tidak dipercaya hanya karena browser menyediakan mekanisme permintaan akses.

Pengujian sebelum dirilis

Uji setidaknya tiga skenario: izin belum pernah diberikan, izin sudah diberikan tetapi belum aktif pada konteks baru, dan permintaan ditolak. Ulangi pengujian pada browser utama audiens karena prompt, syarat interaksi, masa berlaku izin, dan dukungan fitur dapat berbeda. Periksa juga apakah halaman dapat menampilkan konten dasar tanpa cookie pihak ketiga dan apakah log server tidak menyimpan data sensitif secara berlebihan.

Jika menggunakan header atau kebijakan Permissions-Policy, pastikan konfigurasi tidak memblokir fitur yang memang diperlukan. Jangan menyimpulkan bahwa API rusak hanya dari satu hasil uji: kegagalan bisa berasal dari sandbox iframe, tidak adanya aktivasi pengguna, pengaturan browser, atau izin yang belum diberikan.

Kesimpulan

Storage Access API membantu pengembang menangani kebutuhan cookie pihak ketiga yang sah tanpa menganggap akses lintas situs sebagai hak otomatis. Periksa izin yang sudah ada, minta akses melalui tindakan pengguna, tangani penolakan dengan baik, dan pertahankan jalur alternatif yang aman. Pilih solusi paling terbatas yang memenuhi kebutuhan produk; sering kali penyimpanan terpartisi atau autentikasi berbasis token lebih sesuai daripada membuka akses ke cookie yang tidak dipartisi.

Referensi teknis: dokumentasi Storage Access API di MDN dan dokumentasi requestStorageAccess().

Terus jelajahi Nazuaf

Baca topik lain atau kunjungi situs utama untuk melihat publikasi Nazuaf.

Artikel kategori ini →