Clear-Site-Data Mereset State Browser untuk Origin
Endpoint logout dapat membatalkan sesi di server tetapi tetap meninggalkan state di browser. Respons yang tersimpan di cache, cookie, DOM storage, dan data client lain dapat bertahan jika aplikasi tidak menanganinya secara terpisah. Sisa state tersebut tidak otomatis menjadi kerentanan, tetapi relevan ketika sebuah boundary keamanan bergantung pada pengembalian profil browser ke kondisi yang lebih bersih.
Header respons HTTP Clear-Site-Data memberi server mekanisme reset yang ditegakkan browser. Respons menyebut satu atau beberapa kelas data, lalu user agent yang mendukungnya menghapus state yang cocok dan terkait dengan origin respons sesuai aturan pemrosesan header.
Respons memilih kelas data secara eksplisit
Server dapat meminta penghapusan beberapa kelas melalui satu header:
Clear-Site-Data: "cache", "cookies", "storage"Token dalam tanda kutip adalah directive, bukan label bebas. Setiap directive menargetkan kelas state yang dikelola browser secara berbeda.
"cache" meminta penghapusan data network cache lokal yang terkait dengan origin. "cookies" meminta penghapusan cookie untuk registered domain yang relevan beserta subdomainnya sesuai aturan header. "storage" mencakup mekanisme penyimpanan yang terkait dengan origin, termasuk fasilitas seperti local storage dan IndexedDB.
Directive "*" yang lebih luas meminta seluruh tipe data yang didukung user agent untuk Clear-Site-Data:
Clear-Site-Data: "*"Bentuk tersebut sengaja bersifat luas. Reset dengan cakupan sempit biasanya lebih mudah ditelaah ketika aplikasi hanya perlu membuang state tertentu.
Secure context menjadi bagian dari boundary
Clear-Site-Data didefinisikan untuk secure context. Pada deployment web normal, respons dikirim melalui HTTPS dari origin yang dianggap browser sebagai potentially trustworthy.
Persyaratan ini sesuai dengan kewenangan header. Penyerang jaringan yang dapat menyisipkan respons HTTP tanpa proteksi tidak semestinya memperoleh primitive browser yang andal untuk menghapus state milik aplikasi aman.
Header juga bekerja dari origin respons. Mekanisme ini bukan perintah umum bagi satu site untuk menghapus data origin lain yang tidak terkait. Aturan origin dan domain browser membatasi cakupan operasi yang diminta.
Penghapusan cookie memiliki konsekuensi pada level domain
Cakupan cookie berbeda dari cakupan storage. Cookie dapat dibuat dengan atribut Domain sehingga dapat terlihat di beberapa subdomain. Directive "cookies" memperhitungkan model tersebut dan tidak memperlakukan setiap cookie sebagai state yang terisolasi pada satu exact origin.
Karena itu, topologi deployment ikut relevan. Pertimbangkan organisasi yang memakai:
app.example.com
admin.example.com
static.example.comReset yang dikembalikan salah satu host dapat memengaruhi cookie dengan cakupan domain yang menjangkau subdomain lain. Efek tersebut dapat berguna untuk sign-out terkoordinasi, tetapi juga dapat mengganggu aplikasi independen yang berbagi parent domain.
Review keamanan perlu mencakup atribut cookie dan kepemilikan domain, bukan hanya endpoint yang mengirim header. Registrable domain yang dipakai bersama merupakan boundary arsitektur dengan konsekuensi operasional.
Penghapusan storage lebih luas dari localStorage
Directive "storage" lebih luas daripada menghapus beberapa key aplikasi dari localStorage. Storage yang dikelola browser mencakup sejumlah API dan model persistensi. Bergantung pada dukungan browser dan perilaku spesifikasi yang berlaku, penghapusan dapat mencakup storage terkait origin seperti IndexedDB, registrasi service worker, dan fasilitas penyimpanan lain.
Perbedaan ini penting untuk aplikasi dengan perilaku offline. Menghapus registrasi service worker atau database lokal persisten dapat mengubah perilaku startup berikutnya, bukan sekadar menghapus preferensi.
Endpoint reset karena itu perlu diperlakukan sebagai transisi state dengan blast radius yang jelas. Menambahkan "storage" ke respons logout hanya sebagai tindakan berjaga-jaga dapat terlalu luas jika produk mengharapkan data offline tetap tersedia setelah autentikasi berakhir.
Penghapusan cache bukan invalidasi cache server
Directive "cache" berkaitan dengan data cache di sisi browser. Directive ini tidak menghapus CDN, reverse proxy, application cache, object store, atau response cache di server.
Sistem tersebut memiliki mekanisme invalidasi sendiri dan dapat melayani banyak pengguna. Mengirim:
Clear-Site-Data: "cache"tidak mencabut objek yang sudah tersimpan pada edge node dan tidak mengubah metadata cache-control pada respons berikutnya.
Pemisahan ini penting saat incident response. Pembersihan state client dan invalidasi shared cache menyelesaikan masalah yang berbeda dan membutuhkan kontrol terpisah.
Alur logout tetap memerlukan revocation di server
Reset browser bukan pengganti pembatalan kredensial di server. Jika session identifier masih valid setelah logout, menghapus cookie pada satu browser hanya membuang salinan lokal milik browser tersebut. Token yang telah disalin, perangkat lain, atau client lain masih dapat mengirim kredensial yang tetap diterima server.
Alur logout yang kuat umumnya memiliki dua tanggung jawab berbeda: membatalkan atau menghentikan state autentikasi pada otoritasnya, lalu menghapus state browser yang tidak semestinya bertahan melewati transisi.
Urutan dan perilaku saat gagal perlu diperhatikan. Jika server telah mencabut sesi tetapi browser mengabaikan directive yang tidak didukung, kredensial tetap harus tidak dapat digunakan. Keamanan tidak boleh bergantung pada keberhasilan pembersihan client saja.
Dukungan browser merupakan batasan deployment
Header HTTP tidak memaksa user agent yang tidak mendukung suatu fitur untuk menerapkan perilaku baru. Aplikasi yang memakai Clear-Site-Data perlu mempertimbangkan kumpulan browser yang benar-benar didukung dan tidak memperlakukan header sebagai satu-satunya enforcement point untuk credential revocation atau authorization.
Kompatibilitas juga memengaruhi pengujian. Sebuah respons dapat membawa directive yang valid secara sintaksis sementara hasil pembersihan berbeda antarversi browser atau tipe data. Pengujian sebaiknya memeriksa kelas state yang memang penting bagi aplikasi.
Untuk alur sensitif, verifikasi lebih berguna daripada mengasumsikan header yang terlihat pada network trace telah menghasilkan seluruh efek yang dimaksud.
Endpoint reset memerlukan penempatan yang disengaja
Karena header dapat menghapus state lokal yang penting, header sebaiknya hanya dikirim pada respons yang memang ditujukan untuk transisi tersebut. Penerapan global melalui reverse proxy atau kumpulan security header generik dapat menyebabkan kehilangan data berulang dan perilaku aplikasi yang tidak stabil.
Kandidat yang lazim mencakup respons sign-out eksplisit, boundary pergantian akun, alur recovery, atau prosedur insiden saat state browser lama perlu dibuang. Set directive yang tepat harus mengikuti model state aplikasi.
Clear-Site-Data paling kuat sebagai kontrol state browser yang presisi. Header ini memberi server mekanisme respons standar untuk meminta pembersihan, sementara revocation autentikasi, authorization, invalidasi shared cache, dan transisi state khusus aplikasi tetap menjadi tanggung jawab sistem yang memilikinya.