Pertanyaannya mengatakan itu benar-benar. Saya ingin memberikan layanan tetapi saya tidak ingin menyimpan data apa pun di dalam basis data. Dengan semua berita terbaru tentang peretasan, dll menurut saya lebih baik klien memiliki kendali penuh atas data mereka.
Masalahnya adalah bahwa data yang disimpan berpotensi sensitif. Apa yang akan saya lakukan adalah ... ketika seorang klien mengunjungi situs web akan ada pertanyaan yang menanyakan 'apakah Anda menggunakan komputer pribadi atau komputer publik'. Jika mereka menggunakan komputer umum, situs tersebut akan menolak akses.
Jika mereka menggunakan komputer pribadi maka mereka akan diminta untuk mengatur kata sandi. Semua data mereka akan dienkripsi dengan kata sandi ini. Sekarang jelas ini tidak terlalu aman. Metode enkripsi akan menggunakan JavaScript dan kata sandi mereka dalam teks biasa jadi saya berasumsi bahwa mungkin bagi pengguna yang cerdas untuk menemukan kata sandi di Penyimpanan lokal dan mengakses data.
Saya merasa bahwa ini tidak terlalu menjadi masalah. Jika Anda menggunakan komputer pribadi, peluang terjadinya hal ini sangat kecil karena ... orang lain memerlukan akses ke akun pengguna khusus mereka di komputer, orang lain perlu tahu tentang situs itu ... orang lain perlu memahami penyimpanan lokal dan cara mengaksesnya. Data sensitif tidak ada yang akan membahayakan identitas mereka atau banyak hal lain. Itu hanya merekam sesuatu yang kebanyakan orang tidak suka dipublikasikan.
Jadi sebenarnya pertanyaannya adalah, apakah penyimpanan lokal cukup aman?
Pertanyaan tambahan .. seberapa sulit untuk menghapus Penyimpanan lokal Anda? Saya tidak ingin pengguna menghapus data mereka secara tidak sengaja.
Akhirnya - apakah itu layak untuk mengenkripsi / mendekripsi data mereka seolah-olah Anda memiliki kata sandi Anda dapat mengakses situs ..
sumber
Jawaban:
Bagaimana kalau tidak menyimpan kata sandi sama sekali, bahkan tidak di penyimpanan lokal? Anda dapat menggunakan fungsi derivasi kunci untuk mendapatkan kunci dari kata sandi. Dengan garam dan jumlah iterasi yang masuk akal, ini harus aman.
sumber
Menggunakan JavaScript dengan penyimpanan lokal semaksimal aman (server Anda ditambah koneksi antara browser dan server).
Jika ada yang berhasil memodifikasi server Anda dan melayani file JS yang berbeda atau memodifikasi (saat sedang dikirim) file JS yang dikirim dari server ke klien, mereka dapat melakukan apa saja dengan data yang mereka inginkan.
Selain itu: Karena data ada di klien, Anda tidak dapat melakukan apa pun untuk melindungi data. Pada server biasa Anda dapat misalnya membatasi frekuensi akses (misalnya untuk kata sandi aman jauh: hanya 1 kata sandi yang dibaca dalam 10 menit). Semua ini tidak berguna jika data ada di klien dan semua kode yang bekerja dengan data dapat dimanipulasi oleh penyerang.
Setelah semua bahkan dengan penyimpanan lokal Anda perlu mengamankan aplikasi web Anda! Mengapa melakukan hal-hal pada server aman (semoga)? Jika tidak, mengapa tidak menggunakan program lokal yang diinstal pada klien juga?
sumber
Bagaimana dengan mendapatkan kunci dari server yang digunakan untuk mendekripsi data penyimpanan lokal?
Ini bisa bekerja seperti ini:
Ini seharusnya hanya memungkinkan akses sementara pengguna memiliki sesi yang ditetapkan.
sumber
umumnya tidak sulit untuk menghapus penyimpanan lokal, tetapi tergantung pada browser. Anda harus mendapatkan alat pengembang browser (firebug, hal-hal webkit, dll).
pikirkan itu seperti Anda memikirkan cookie. Anda tidak boleh menyimpan data sensitif di penyimpanan lokal. kata sandi, nomor kartu kredit, apa pun.
Anda selalu dapat mengimplementasikan beberapa fitur untuk menghapus penyimpanan lokal setelah jumlah tidak aktif x, tetapi itu tidak akan menyelesaikan masalah keamanan. Seperti sesi otomatis yang kedaluwarsa. Masalah yang sama berlaku, jika seseorang meninggalkan komputer dan kemudian orang lain duduk sebelum sesi berakhir, mereka dapat melakukan hal-hal.
sumber
Dua masalah:
jika Anda menyimpan kata sandi teks biasa dan kemudian mengandalkan fakta yang tidak mungkin ditemukan, itu hanya keamanan melalui ketidakjelasan. Cukup simpan data dalam cleartext dan andalkan asumsi yang sama (masih belum aman, tetapi tidak ada rasa aman yang salah)
pada sebagian besar browser, jika orang menghapus cache mereka, mereka juga menghapus konten Penyimpanan lokal. Orang tidak berharap kehilangan data penting saat menghapus riwayat dan cache.
Saya pikir Anda melebih-lebihkan apa maksud penyimpanan lokal. Jika Anda ingin menggunakan database lokal yang bermain baik dengan webapps Anda bisa melihat ke CouchDB 's couchapps .
Tapi jangan simpan kata sandinya.
sumber
Anda bisa menggunakan javascrypt . Minta pengguna kata sandi yang akan menjadi kunci enkripsi / dekripsi
Anda tidak perlu menyimpan kata sandi, tetapi minta setiap kali pengguna membuka halaman.
Mungkin menyimpannya, jika pengguna ingin, dan sekarang implikasinya.
Tetapi kemudian untuk bergabung dengan komentar stivlo, bagaimana dengan:
Saya pikir Anda harus mempertimbangkan kembali alasannya. Menghindari awan hanya karena beberapa peristiwa baru dan sensasional, adalah kesimpulan cepat.
sumber