Haruskah saya menyimpan alamat email sebagai plaintext dalam database?

14

Jelas bagi semua orang ( saya harap ) bahwa menyimpan kata sandi tanpa setidaknya memberi salin / hashing adalah ide yang buruk .

Bagaimana dengan email? Katakanlah Anda menyimpan alamat email berlangganan, jika Anda mengenkripsi dengan benar mungkin tidak dapat digunakan untuk mengirim email ke pengguna. Di sisi lain, jika Anda tidak mengenkripsi dan database dicuri, semua pengguna Anda berisiko spam potensial.

Pertanyaan ini bukan tentang masalah hukum khusus (meskipun mungkin diberikan, mereka tetap bergantung pada negara) atau tentang mengenkripsi basis data itu sendiri.

Pierre Arlaud
sumber
Pikirkan seseorang harus menyimpan semua PII (informasi identitas pribadi) secara aman. Itu adalah mengenkripsi data yang harus dibutuhkan aplikasi (yaitu mengirim beberapa email verifikasi) dan data hash / garam yang digunakan untuk otentikasi (yaitu kata sandi). Plus, tentu saja, mengamankan basis data adalah wajib dalam kasus ini.
Ilan Huberman
Anda dapat mengatur aplikasi terpisah yang hanya menyimpan email + kata sandi (+ data pribadi lainnya) misalnya. Anda dapat menggunakannya untuk mengirim email dengan memanggilnya, misalnya dengan api rest internal: localEmailServer / sendInvite / 123 di mana 123 = user id. Anda dapat melakukan hal yang sama untuk login, memposting ke localEmailServer / login yang dapat mengembalikan benar atau salah. Dengan begitu aplikasi Anda bisa diretas tetapi tetap saja mereka tidak memiliki alamat surel. Jika Anda membatasi jumlah permintaan untuk layanan ini, itu lebih terlindungi karena Anda tidak rentan terhadap hal-hal seperti injeksi SQL pada bagian ini.
Luc Franken

Jawaban:

9

Menyimpan hash asin dari alamat email bisa menjadi pilihan jika Anda menyimpan catatan itu hanya untuk konfirmasi / otentikasi akun.

Dalam kasus lain, tampaknya bagi saya bahwa mengenkripsi email akan membuat pekerjaan mempertahankan database lebih sulit sambil mendapatkan sedikit imbalan.

Mungkin mengamankan akses database itu sendiri adalah pilihan yang lebih baik: biasanya ada banyak informasi lain dalam database yang Anda tidak ingin dikumpulkan.


Pertanyaan serupa tentang Stackoverflow: Apakah layak untuk mengenkripsi alamat email dalam database?

manlio
sumber
Tidak melihat pertanyaan itu! Sebagai catatan, ini adalah pertanyaan lama tapi saya yakin itu seharusnya menjadi milik programmer.
Pierre Arlaud
3
@PierreArlaud: Sebenarnya, semuanya akan lebih baik pada Keamanan Informasi karena tidak benar-benar ada hubungannya dengan pemrograman.
Blrfl
Memang ada pengembalian enkripsi email. Jika Anda tidak menyimpan kunci dalam database yang dikompromikan yang sama, Anda membuat orang jahat itu tidak menggunakan email. Ingat, email banyak digunakan untuk aktivasi akun dan perubahan kredensial.
NoChance
2

Saya pikir Anda sudah mengatakan itu semua.

Satu-satunya hal yang dapat saya pikirkan adalah tidak menggunakan filter hash satu arah seperti SHA1 untuk menyimpan alamat email. Gunakan beberapa enkripsi kunci publik (reversibel) dalam aplikasi Anda dan pastikan bahwa kunci pribadi Anda tidak ada di dekat basis data, sehingga mereka tidak dapat "dicuri" bersamaan.

Dengan begitu, Anda masih bisa tidak mengenkripsi alamat email untuk mengirim email,

Mawg berkata mengembalikan Monica
sumber
6
Dan? Dan? Ketegangan itu membunuhku :)
Pierre Arlaud
Dan apa? Apa yang menegangkan? Enkripsi (didekripsi) di aplikasi Anda sebelum disimpan dalam database berarti tidak perlu khawatir jika database dicuri, diretas, dll. Tetapi, ketika Anda ingin mengirim email, Anda dapat mendekripsi alamat email dari database. Bukan itu yang Anda inginkan ? Apakah saya melewatkan sesuatu?
Mawg mengatakan mengembalikan Monica
2
Hanya komentar pada karakter terakhir dari jawaban Anda: D
Pierre Arlaud
Saya mencoba untuk menemukan apa jawaban Anda mengatakan bahwa manlio tidak. Pada dasarnya, idenya adalah memiliki hash yang dapat dibalik dari email, seperti hash asin. Atau mungkin Anda memiliki sesuatu yang sangat berbeda dalam pikiran?
Pierre Arlaud
Maaf, saya kira kami mengirimkan pada waktu yang bersamaan.
Mawg mengatakan mengembalikan Monica