E-posta adreslerini veritabanında düz metin olarak tutmalı mıyım?


14

Herkesin (oldukça açık Umut bunları karma / en azından tuzlama olmadan şifreleri saklamak bir olduğunu) korkunç bir fikir.

E-postalar ne olacak? Abonelik e-posta adresini koruduğunuzu varsayalım, düzgün şifrelerseniz kullanıcılara e-posta göndermek uygun olmayabilir. Öte yandan, şifrelenmezseniz ve veritabanı çalınırsa, tüm kullanıcılarınız potansiyel bir spam riskiyle karşı karşıya kalır.

Bu soru, yasaya özgü konularla (verilse de, ülkeye bağlı olarak kalırlar) veya veritabanının kendisini şifrelemeyle ilgili değildir.


Kişinin tüm kişisel bilgileri (kişisel kimlik bilgileri) güvenli bir şekilde tutması gerektiğini düşünün. Bu, uygulamanın ihtiyaç duyduğu verileri şifrelemek (yani bazı doğrulama e-postaları göndermek) ve kimlik doğrulama için kullanılan karma / tuz verilerini (yani şifre) şifrelemek. Ayrıca, elbette, bu durumda veri tabanını güvence altına almak zorunludur.
Ilan Huberman

Örneğin, yalnızca e-posta + şifrelerini (+ diğer özel verileri) depolayan ayrı bir uygulama ayarlayabilirsiniz. Bunu, örneğin dahili dinlenme api: localEmailServer / sendInvite / 123 ile 123 = kullanıcı kimliği arayarak e-posta göndermek için kullanabilirsiniz . Giriş için aynısını yapabilir, true veya false döndürebilen localEmailServer / login'e gönderebilirsiniz . Bu şekilde uygulamanız saldırıya uğrayabilir, ancak yine de e-posta adresleri olmayacaktır. Bu hizmet için istek miktarını sınırlarsanız, bu bölümdeki SQL enjeksiyonları gibi şeylere karşı savunmasız olmadığınız için daha fazla korunur.
Luc Franken

Yanıtlar:


9

Bu kayıtları yalnızca hesap onayı / kimlik doğrulaması için saklarsanız, e-posta adreslerinin tuzlanmış bir karmasının depolanması seçeneği olabilir.

Diğer durumlarda, bana öyle geliyor ki, e-postaları şifrelemek, karşılığında çok az kazanırken veritabanını zorlaştırma işini daha da zorlaştıracaktır.

Muhtemelen veritabanının erişimini güvence altına almak daha iyi bir seçimdir: genellikle veritabanında toplanmak istemediğiniz birçok bilgi vardır.


Stackoverflow'da benzer bir soru: Veritabanındaki e-posta adreslerini şifrelemeye değer mi?


Bu soruyu görmedim! Kayıt için bu eski bir soru ama şimdi programcılara ait olması gerektiğine inanıyorum.
Pierre Arlaud

3
@PierreArlaud: Aslında, programlama ile hiçbir ilgisi olmadığı için her şey Bilgi Güvenliği konusunda daha iyi olurdu.
Blrfl

Gerçekten e-postaları şifrelemenin bir getirisi var. Anahtarları güvenliği ihlal edilmiş aynı veritabanında depolamazsanız, kötü adamı e-postaları kullanmaktan mahrum edersiniz. Bir e-postanın, hesapların etkinleştirilmesi ve kimlik bilgilerinin değiştirilmesi için yoğun şekilde kullanıldığını unutmayın.
NoChance

2

Sanırım zaten hepsini söyledin.

Düşünebileceğim tek şey, e-posta adreslerini saklamak için SHA1 gibi tek yönlü bir karma filtre kullanmamaktır. Uygulamanızda bazı (geri döndürülebilir) ortak anahtar şifrelemesi kullanın ve özel anahtarınızın veritabanına hiçbir yerde yakın olmadığından emin olun, böylece birlikte "çalınamazlar".

Bu şekilde, e-posta göndermek için e-posta adreslerinin şifresini yine de kaldırabilirsiniz,


6
Ve? Ve?
Gerilim

Ve ne? Şüpheli nedir? Veritabanında depolanmadan önce uygulamanızdaki şifreyi (şifresini çözme), veritabanı çalınması, saldırıya uğraması vb. İçin endişelenmeniz gerekmez. Ancak, e-posta göndermek istediğinizde veritabanından e-posta adreslerinin şifresini çözebilirsiniz. ? Bir şey mi kaçırıyorum?
Mawg, Monica

2
Cevabınızın son karakteri hakkında bir yorum: D
Pierre Arlaud

Cevabınızın manlio'nun yapmadığını söylediklerini bulmaya çalışıyorum. Temel olarak, fikir, tuzlanmış bir karma gibi e-postanın geri dönüşümlü bir karma değerine sahip olmaktır. Ya da belki aklınızda tamamen farklı bir şey mi vardı?
Pierre Arlaud

Üzgünüm, sanırım aynı zamanda gönderdik.
Mawg, Monica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.