Apabila membangunkan aplikasi web, keperluan sering timbul untuk menyimpan data pengguna dalam penyemak imbas untuk meningkatkan pengalaman atau mengekalkan kegigihan keadaan. Tetapi adakah selamat untuk menggunakan localStorage untuk ini? Mari terokai risiko, amalan terbaik dan alternatif yang selamat.
Apakah itu LocalStorage?
localStorage ialah API penyemak imbas yang membolehkan anda menyimpan data secara ringkas dan berterusan di sisi pelanggan. Tidak seperti sessionStorage, data yang disimpan dalam localStorage kekal boleh diakses walaupun selepas pengguna menutup dan membuka semula penyemak imbas.
Walaupun ia adalah alat yang praktikal, kesederhanaannya disertakan dengan beberapa had keselamatan.
Senario: Pengesahan Pengguna
Bayangkan anda mempunyai aplikasi yang menggunakan Supabase untuk mengesahkan pengguna. Selepas log masuk, anda ingin menyimpan maklumat pengguna dalam penyemak imbas, seperti contoh ini:
async function checkAuth() { try { const { data, error } = await supabase.auth.getUser() if (error) throw error if (data.user) { user.value = data.user localStorage.setItem('user', JSON.stringify(data.user)) // Armazenando o usuário console.log('Usuário autenticado:', data.user) } else { localStorage.removeItem('user') } } catch (error) { console.error('Erro ao verificar autenticação:', (error as Error).message) } }
Ideanya nampak mudah: simpan objek pengguna dalam localStorage untuk menggunakannya kemudian. Tetapi adakah pendekatan ini selamat?
Risiko Menggunakan LocalStorage
Sebagai contoh, jika penyerang berjaya menyuntik kod berikut ke dalam halaman anda:
console.log(localStorage.getItem('user'))
Mereka akan mempunyai akses kepada data yang disimpan, termasuk maklumat sensitif tentang pengguna.
Data tidak disulitkan
localStorage menyimpan data sebagai teks biasa. Ini bermakna sesiapa sahaja yang mempunyai akses kepada peranti pengguna boleh membuka konsol penyemak imbas dan terus melihat maklumat yang disimpan.
Tiada Tamat Tempoh Automatik
Tidak seperti kuki, localStorage tidak mempunyai mekanisme terbina dalam untuk tamat tempoh data secara automatik. Ini boleh menyebabkan penyimpanan maklumat lama atau lapuk yang tidak diperlukan.
Alternatif Lebih Selamat
Anda boleh menyemak sesi pengguna pada bila-bila masa menggunakan kaedah:
const { data, error } = await supabase.auth.getUser()
Gunakan sessionStorage
Jika anda perlu menyimpan data dalam penyemak imbas, pertimbangkan untuk menggunakan sessionStorage. Ia menyimpan data hanya selagi tab atau tetingkap penyemak imbas dibuka. Ini mengurangkan risiko pendedahan jika peranti dicuri secara fizikal, tetapi tidak melindungi daripada XSS.
Hanya Simpan Data Tidak Sensitif
Jika anda memerlukan ketekunan dalam localStorage, elakkan menyimpan maklumat sensitif seperti token akses atau data peribadi. Simpan maklumat generik sahaja, seperti pengecam pengguna:
async function checkAuth() { try { const { data, error } = await supabase.auth.getUser() if (error) throw error if (data.user) { user.value = data.user localStorage.setItem('user', JSON.stringify(data.user)) // Armazenando o usuário console.log('Usuário autenticado:', data.user) } else { localStorage.removeItem('user') } } catch (error) { console.error('Erro ao verificar autenticação:', (error as Error).message) } }
Gunakan Dasar Keselamatan Kandungan (CSP) yang ketat untuk menghalang skrip yang tidak dibenarkan.
Sahkan dan bersihkan semua input pengguna.
Pastikan kebergantungan dan perpustakaan sentiasa dikemas kini.
Contoh dengan CryptoJS:
console.log(localStorage.getItem('user'))
Awas: Pastikan anda melindungi kunci penyulitan, seolah-olah ia terdedah, keselamatan akan terjejas.
Kesimpulan
Walaupun localStorage ialah alat praktikal untuk menyimpan data dalam penyemak imbas, ia tidak sesuai untuk data sensitif. Berikut adalah cadangan utama:
Sesi amanah yang diuruskan oleh Supabase.
Elakkan menyimpan maklumat sensitif ke localStorage.
Laksanakan amalan keselamatan yang baik seperti perlindungan XSS.
Dengan amalan ini, anda boleh memastikan pengalaman pengguna adalah lancar sambil melindungi data anda daripada serangan.
Apa pendapat anda? Adakah anda menggunakan localStorage dalam projek anda? Kongsi pengalaman anda dalam komen!
Atas ialah kandungan terperinci Adakah selamat untuk menyimpan data pengguna dalam localStorage?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!