it-swarm-id.com

Apakah mengirim kata sandi ke email pengguna aman?

Seberapa aman mengirim kata sandi melalui email ke pengguna, karena email tidak diamankan oleh HTTPS.

Apa cara terbaik untuk mengamankannya? Haruskah saya menggunakan enkripsi?

102
user310291

Anda seharusnya tidak pernah mengirim kata sandi di tempat yang jelas, Anda juga tidak harus menyimpannya di tempat yang jelas. Anda harus hash menggunakan hash kriptografi satu arah yang lambat seperti bcrypt atau PBKDF2. Jika pengguna lupa kata sandi mereka, Anda menawarkan mereka fungsi "setel ulang kata sandi", yang mengirimkan tautan reset satu kali ke akun mereka.

Skema seperti berikut ini masuk akal:

  • Hash semua kata sandi menggunakan garam plus bcrypt/PBKDF2. Lihat alasan saya di sini . (EDIT, Maret 2019: gunakan Argon2 )
  • Validasi hash saat masuk.
  • Jika pengguna lupa kata sandi, kirimkan tautan reset sekali pakai yang aman, menggunakan token reset yang dibuat secara acak yang disimpan dalam database. Token harus unik dan rahasia, jadi hash token dalam database dan bandingkan ketika tautan digunakan.
  • Menegakkan bahwa token hanya dapat digunakan untuk mereset kata sandi pengguna yang memintanya.
  • Setelah token digunakan, itu harus dihapus dari database dan tidak boleh digunakan lagi.
  • Semua token yang setara kata sandi, termasuk token yang disetel ulang, akan kedaluwarsa setelah beberapa saat, mis. 48 jam. Ini mencegah penyerang mengeksploitasi token yang tidak digunakan di kemudian hari.
  • Segera tampilkan formulir untuk memungkinkan pengguna menetapkan kata sandi baru. Jangan gunakan kata sandi sementara yang dibuat secara acak!
  • Lakukan semua ini melalui SSL.

Saya sangat menyarankan membaca Panduan Definitif untuk Otentikasi Website Berbasis Formulir untuk seperangkat pedoman lengkap tentang cara membangun sistem login yang aman.

156
Polynomial

Email tidak aman. Dengan demikian, mengirim kata sandi melalui email merupakan risiko keamanan. Untuk mengurangi risiko, Anda dapat (dalam beberapa situasi) membuatnya sehingga kata sandi yang dikirim melalui email adalah kata sandi satu kali, yang hanya membuka kemungkinan bagi pengguna untuk memilih kata sandi baru sendiri.

Inilah yang dilakukan sistem saya-lupa-kata-kata-sandi-saya-untuk-situs-web ini: pengguna mengklik tombol "sial, saya lupa kata sandi saya", dan email dikirim, yang berisi URL (dengan HTTPS ) yang menyematkan pengidentifikasi sesi acak, dan menunjuk ke halaman yang memungkinkan pengguna memilih kata sandi baru. URL is "kata sandi satu kali". Dengan skema ini, Anda setidaknya bisa, dari sisi server, tahu kapan URL digunakan.

Jika Anda dapat melakukan enkripsi dengan benar, yaitu jika Anda dapat mengirim pesan OpenPGP atau S/MIME yang dienkripsi dengan kunci publik pengguna, maka pengguna memiliki sepasang kunci privat/publik : dalam hal itu, mengapa Anda menggunakan kata sandi sama sekali?

42
Thomas Pornin

Ini adalah praktik yang buruk untuk mengirim kata sandi kepada pengguna, karena itu berarti Anda memiliki salinan kata sandi pengguna yang jelas.

Saya tidak dapat memikirkan alasan yang baik untuk melakukan ini. Ada cara lain yang lebih aman untuk mencapai apa yang dibutuhkan.

Untuk jawaban umum terkait keamanan email, saya sarankan Anda membaca tautan ini , yang berisi beberapa informasi bagus.

Jika Anda HARUS mengirim informasi sensitif melalui email, gunakan skema seperti PGP atau teknik enkripsi lainnya untuk mengamankan data.

22
user10211

Jika Anda memiliki 'kata sandi yang jelas' untuk dikirim di tempat pertama (selain dari proses pendaftaran), Anda salah melakukannya. Jangan pernah menyimpan kata sandi plaintext! Banyak perusahaan seperti Sony Music dan sejenisnya telah dibakar belakangan ini dari itu .. dan biarkan saya memberitahu Anda konsumen tidak senang.

4
Vaughan Hilts

Menggemakan posting sebelumnya, email tentu saja tidak aman dan Anda harus tidak pernah mengirim email data sensitif , dalam kata sandi tertentu. Terutama karena mereka tidak dienkripsi dan ditemukan dalam teks yang jelas, sangat mudah bagi siapa saja untuk meretas email Anda dan mendapatkan akses ke ini di jaringan publik.

Jika Anda atau klien Anda mengalami kesulitan mengingat kata sandi Anda, Anda harus menggunakan manajer kata sandi yang aman. Ini adalah situs web yang menampung daftar kata sandi Anda dalam brankas yang sepenuhnya terenkripsi. Yang bagus adalah KeePass atau LastPass.

Jika Anda adalah perusahaan yang mencoba mengirim kembali kata sandi mereka kepada klien, Anda harus mengatur pertanyaan keamanan yang dijawab oleh pelanggan saat mereka pertama kali membuat akun mereka. Dengan cara ini jika mereka lupa, mereka dapat mengklik tautan yang mengirim mereka untuk menjawab pertanyaan-pertanyaan ini dengan benar dan mengatur ulang kata sandi mereka.

Untuk pengetahuan Anda sendiri, ini adalah blog yang informatif, yang membuat enkripsi dan peringatan terhadap penggunaan kata sandi tertentu http://www.ziptr.com/blog-last-4-digits-ssn-password = dari Ziptr.

3
Katie Campbell