Aslında bunu burada bir cevap olarak yayınladım bu konuda ama çok fazla geri bildirim alamadım ve şimdi başkalarının en iyi yaklaşım olduğunu düşündüğü şeyi veya herhangi bir fark olup olmadığını merak ediyorum iki yaklaşım arasında.
Orijinal nokta, kullanıcı bir web sitesini şifresini unuttuğunda bir şifre sıfırlama bağlantısı göndermenin daha güvenli olup olmadığı veya orijinal şifrenin bir e-postada şifrelenmemiş olarak gönderilip gönderilmeyeceği idi.
Şimdi bir şifre tuzlama ve şifreleme kötü çünkü veritabanı sonunda web sitesinden çalındığında saldırgan tüm şifreleri gün olarak açık olacaktır. Tamam, anladım.
Ancak veritabanının çalınması olasılığını göz ardı edersek ve yalnızca kullanıcı parolasını unutup "unutulmuş parola adımları" nı izleyerek bakarsak; bir e-postadaki düz metin parola üzerinden sıfırlama bağlantısı göndermek daha mı, daha az mı güvenli?
Benim düşüncem de aynı. Çünkü bir saldırgan e-postanıza hiçbir şekilde erişemezse (e-posta giriş ayrıntılarınızı biliyorsa veya bir yerdeki trafiği gizliyorsa), bu nedenle gönderilen düz metin şifresine veya sıfırlama bağlantısına erişebilir - sınırlı bir süre olsa bile bağlantı.
Saldırgan, e-postanız olduğunu bile bilmeden şifrenizi sıfırlayabilir.
Buradaki düşüncem kusurlu mu?
Mevcut e-posta topluluğuna erişmek, gelen akışa erişimden çok daha kolaydır. Örneğin, birisinin sistemine birkaç dakika erişim sağlamak, e-postalarını kullanarak kolayca arama yapmanıza olanak tanır. Dolayısıyla, bir saldırganın eski postalara erişimi olduğu, ancak yeni, gelen posta akışına erişemediği durumlar için:
Kullanıcıya parolasını aldıktan sonra değiştirdiklerini (ne olduğunu söylediğiniz olası değilse) veya hatırlatmayı sildiğinizde (kalıcı olarak arşivlemiyor veya bir 'çöp kutusu' klasörüne gitmiyorsunuz) hatırlıyorsunuz İleti.
Bu olmazsa, kullanıcının e-posta hesabına bir süre sonra erişirsem, o zaman (sınırlı bir süre/sınırlı kullanım, belki de saldırganın kolayca kullanamayacağı şekilde sınırlı) sıfırlama bağlantısı herhangi bir şey olmayacak kullanın, ancak (büyük olasılıkla hala geçerli) şifreye sahip olmak kesinlikle.
Buna ek olarak, düz metin şifresini bana göndererek, erişilebilir bir yerde sakladığınızı kanıtlıyorsunuz. Çoğu durumda, buna gerek yoktur, çünkü şifreyi (ve tuz/karabiber) şifrelemenize gerek yoktur, sadece hash etmeniz gerekir. Şifrelenmişse, veritabanına ve şifre çözme anahtarına erişimi olan herkes (örneğin, muhtemelen personelin çoğu veya kodu veritabanıyla birlikte çalan herkes) düz metin parolasını alabilir. Karma ise, karma gerçekleşmeden önce almanız gerekir (örn. Bir giriş oturumu sırasında).
Ayrıca, insanlar olmamasına rağmen, aynı şifreyi (veya çok benzer şifreleri) birden çok sitede kullanmak çok yaygındır. Bu, tek bir hesaba girmek için bir yol sağlamak yerine, birçok hesaba girmek için bir yol sağladığınız anlamına gelir.
Saldırganın tüm gelen postalara erişimi olduğu durumda (potansiyel olarak, gelen postaları kullanıcı görmeden kaldırabilir), bunların hiçbiri güvenli değildir. E-posta hesabı yüksek riskli şeklindedir, çünkü bu tür bir erişiminiz varsa, kullanıcının hesabının bulunduğu her siteye gidebilir ve bir şifre sıfırlaması oluşturabilirsiniz. Bundan kaçınmak için, erişim sağlamak için iki faktörlü kimlik doğrulama gibi e-posta hesabınızdan başka (veya bunun yanı sıra) bir şey kullanmanız gerekir.
İkinci durumda bile, bir sıfırlama bağlantısının hala üstün olduğunu unutmayın: saldırgan bir sıfırlama bağlantısı yoluyla kullanıcının parolasını değiştirirse, kullanıcı oturum açmaya çalıştığında bir şeyin yanlış olduğunu (çok geç, ancak en azından biliyorlar). Yalnızca şifreyi giriyorsanız, kullanıcının saldırganın sessizce eriştiği hakkında hiçbir fikri yoktur.
Tamam, şifrelerin düz metin olarak saklandığını görmezden gelmek ve doğrudan soruya dalmak:. Parola, uzun geçerliliğe sahip bir kimlik bilgileriyken, parola sıfırlama bağlantısı farklı şekillerde kapsamlandırılabilir:
Ayrıca, sizin sitesinde artık geçerli olmayabilecek eski bir şifrenin, insanlar her türlü hizmette şifreleri tekrar kullandıkları için müşteri için hala çok hassas olabileceği de unutulmamalıdır.
Bu açıdan, insanların e-posta kutularına şifreleri koymak biraz kaba kabul edilebilir.
Bir kullanıcının şifresini açık bir şekilde gönderirseniz, diğer sitelerde de kullandıkları bir şifreyi gönderiyor olabilirsiniz - kullanıcıyı bir sonraki girişte sitenizdeki şifreyi değiştirmeye zorlasanız bile, onlara hiçbir iyilik yapmadınız. hiç.
Kullanıcılarınız için en az endişeniz varsa, şifreleri düz metin olarak saklamak etik değildir. Güvenli tuzlu karmaları saklamalısınız. Düz metin parola göndermek, güvenlik bilincine sahip kullanıcıların hizmetinizi kullanmayı bırakmasına neden olabilir (güvenlik bilincine sahip kullanıcılar parolaları yeniden kullanmasalar bile, güvenlik açısından bilinçli olmayan hizmetleri desteklemeyi sevmezler).
Parola sıfırlamanın nasıl uygulanacağı ile ilgili olarak; genellikle orta derecede güvenli bir site için (kredi kartı diyelim), bazı temel güvenlik sorularını (ör. annenin kızlık soyadı) yanıtlamalarını ve iki faktörlü kimlik doğrulama biçimi olarak e-posta hesaplarını veya telefon numaralarını kontrol ettiklerini doğrulamanız gerekir. Bağlantı yalnızca kısa bir zaman aralığında (saatler ila günler) ve yalnızca bir kez geçerli olmalıdır (örn., İlk kullanımdan sonra ve bir süre sonra süresi dolan rastgele oluşturulmuş bir simge içerir).
Ayrıca, parolanın sıfırlandığını da bildirirsiniz (ve e-postalarının güvenliği ihlal edilmiş olsa bile; artık eski parolalarıyla oturum açamadıklarında bir saldırganın kanıtını bulurlar). Parolayı göndermek (değiştirmeden), bu saldırının kullanıcı bilmeden (e-postaların silindiğini söylüyorsa) gizlice yapılabileceği anlamına gelir.
Bir şifre sıfırlama bağlantısı göndermek daha iyidir.
Bazı siteler unutulan şifre formuna anında şifreyi rastgele bir değere sıfırlar ve kullanıcıya e-postayla gönderilir. Bu bir hizmet reddi hatası vardır - hesap sahibi olmayan biri parolalarının sıfırlanmasına neden olabilir. Parola sıfırlama bağlantısı bunu önler, çünkü parola yalnızca kullanıcı bağlantıyı tıklattığında sıfırlanır - ve bunu yapmak için e-posta adresine erişmeleri gerekir.
Kullanıcının e-postasına erişimi olan bir saldırgana karşı biraz güvenlik istiyorsanız, genel yaklaşımda güvenlik soruları da vardır. Bunlar "Evcil hayvanınızın ilk adı neydi" gibi sorular. Bunların sorulması için gereken süre, kullanıcı e-postadaki şifre sıfırlama bağlantısını tıkladıktan sonradır.
Burada bazı iyi tavsiyeler: https://www.owasp.org/index.php/Forgot_Password_Cheat_Sheet
Sıfırlama bağlantısı göndermek daha iyidir.
@Tony Meyer ve @mhswende tarafından verilen nedenlere ek olarak, sıfırlama bağlantısındaki sayfa ek kimlik doğrulaması gerektirebilir. Birçok site, kullanıcıların tam olarak bu amaçla "güvenlik sorularını" yanıtlamasını gerektirir (eski bilgisayar öncesi standardı annenizin kızlık soyadını ister). Telefon numaranızı içeren siteler, şifre sıfırlama sayfalarında SMS ile gönderdikleri bir kod girmenizi gerektirebilir. Finansal kurumlar, eski finansal kayıtlar (geçmiş menkul kıymetler vb.).
İyi bir ikincil kimlik doğrulama mekanizması bulmak önemsiz değildir, ancak herhangi bir şifre sıfırlama (veya kurtarma) prosedürü, ihmal dediğim kadar savunmasızdır.