Seberapa amankah penyimpanan lokal?


33

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 ..


2
JavaScript sisi klien bukan tempat terbaik untuk melakukan kriptografi. Setiap pengguna yang mahir dapat melihat kode tersebut dan meretas algorthim enkripsi Anda dan membuatnya sehingga tidak benar-benar melakukan apa-apa dan hanya menerima kata sandi yang dienkripsi.

Jawaban:


10

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.


Akan lebih aman bukan jika kata sandi dikirimkan ke PHP yang kemudian menghasilkan kunci di belakang layar?
JasonS

Tidak. Kata sandi diberikan pada klien pada awalnya. Dengan mengirimkannya ke server Anda meningkatkan risiko dapat dicuri. Melakukan penurunan kunci dalam JS menyimpan rahasia pada klien. Dalam setiap kasus Anda harus melupakan PW tidak lama setelah itu. Tapi saya pikir itu masih ada gunanya - lihat jawaban saya.

Banyak peretas yang cukup cerdas ... Gunakan Lib bCrypt.
Eddie B

2

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?


Tidakkah Anda pikir masalah keamanan utama adalah jika perangkat itu digunakan atau dicuri oleh orang lain?

2

Bagaimana dengan mendapatkan kunci dari server yang digunakan untuk mendekripsi data penyimpanan lokal?

Ini bisa bekerja seperti ini:

  • Ketika sesi dibuat, server mengembalikan kunci.
  • Kunci itu digunakan untuk mengenkripsi / mendekripsi data di localStorage.
  • Ketika pengguna meninggalkan halaman, kuncinya hilang, mencegah orang lain membaca apa yang ada di Penyimpanan lokal.

Ini seharusnya hanya memungkinkan akses sementara pengguna memiliki sesi yang ditetapkan.


3
Ini tidak akan berfungsi untuk mengakses data secara offline (yang sepertinya merupakan use case utama untuk localStorage). Untuk menggunakan metode ini secara offline, Anda harus menyimpan kunci.
Timothy Lee Russell

0

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.


0

Dua masalah:

  1. 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)

  2. 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.


0

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:

  1. akses beberapa perangkat
  2. cadangan
  3. lupa kata sandi
  4. kliring cache terlalu mudah

Saya pikir Anda harus mempertimbangkan kembali alasannya. Menghindari awan hanya karena beberapa peristiwa baru dan sensasional, adalah kesimpulan cepat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.