- Konu sahibi
- #1
Parola sıfırlama bağlantısı hangi özellikleri taşımalıdır?
Parola sıfırlama bağlantısı; tahmin edilemeyen, tek kullanımlık, kısa süre geçerli, yalnızca doğru hesap için kullanılabilen ve HTTPS üzerinden sunulan bir belirteç taşımalıdır. Belirteç parolanın kendisini veya e-posta adresi gibi gereksiz kişisel bilgileri içermemeli; sıfırlama tamamlandığında hemen geçersiz kılınmalıdır. Kullanıcı bağlantıyı açtığında yalnızca parola yenileme ekranına ulaşmalı, işlem başarıyla tamamlanmadan hesabın otomatik olarak oturum açmış sayılmaması tercih edilmelidir.
Güvenli bağlantının temel özellikleri
- Belirteç rastgele ve yüksek tahmin maliyetli olmalıdır. Sıralı kimlik, kullanıcı adı, zaman damgası veya kolay tahmin edilebilen kısa kod kullanılmamalıdır.
- Belirteç yalnızca bir kez kullanılabilmelidir. Başarılı parola değişikliğinden sonra veya yeni bir sıfırlama isteği oluşturulduğunda önceki belirteçler geçersiz kılınmalıdır.
- Belirtecin geçerlilik süresi sınırlı olmalıdır. Süre dolduğunda kullanıcıdan yeni sıfırlama e-postası istemesi beklenmelidir.
- Belirteç belirli bir hesaba ve işlemin amacına bağlı olmalıdır. Başka bir hesabın parolasını değiştirmek için yeniden kullanılamamalıdır.
- Bağlantı yalnızca HTTPS kullanan, beklenen alan adına ait sayfaya gitmelidir. E-posta metnindeki görünen adres ile gerçek hedefin farklı olması kullanıcıyı yanıltabilir.
- Belirteç düz metin olarak veritabanında saklanmamalıdır. Uygulama, gelen belirtecin güvenli bir özetini saklanan değerle karşılaştırabilir; böylece veritabanı sızsa bile kullanılabilir bağlantıların doğrudan ele geçirilmesi zorlaşır.
- Parola, parola özeti veya gizli güvenlik cevabı bağlantının içinde taşınmamalıdır. Belirteç de uygulama günlüklerine, analiz araçlarına ve yönlendiren başlıklarına gereksiz yere sızdırılmamalıdır.
Örnek akış ve uygulanabilir kararlar
Örneğin bir kullanıcı hesabı için sıfırlama istediğinde uygulama, hesabın mevcut olup olmadığını ifşa etmeyen genel bir yanıt verir. Hesap bazlı ve genel istek hız sınırları e-posta suistimalini azaltmalıdır; gerçek hesapların yanıt süresi de hesap varlığını ifşa etmemelidir. Hesap mevcutsa yeni ve tek kullanımlık bir belirteç üretir, bunun yalnızca özetini saklar ve kullanıcıya sıfırlama sayfasına giden bağlantıyı gönderir.
Bağlantı açıldığında uygulama belirteci, süresini, kullanım durumunu ve bağlı olduğu hesabı kontrol eder. Kontrol başarılıysa yeni parola formu gösterilir. Belirteç geçersiz, kullanılmış veya süresi dolmuşsa parola formu yerine yeni bağlantı isteme seçeneği gösterilir. Parola değişikliği ile belirtecin tüketilmesini tek atomik işlemde tamamlayın; iki eşzamanlı isteğin ikisi de başarılı olmamalıdır. Belirteci yalnız GET ile bağlantı açıldığı için tüketmeyin; e-posta güvenlik önizlemesi kullanıcıdan önce bağlantıyı ziyaret edebilir. Başarılı değişiklikten sonra belirteç silinir ya da kullanılmış olarak işaretlenir; gerekiyorsa mevcut oturumlar da sonlandırılır ve kullanıcı yeniden giriş yapmaya yönlendirilir.
Uygularken şu sırayı izleyin:
- Her sıfırlama isteği için yeni, kriptografik olarak güvenli ve tek kullanımlık bir belirteç üretin.
- Bağlantıyı güvenilir sabit uygulama adresinden üretin; doğrulanmamış Host başlığına güvenmeyin. HTTPS, no-referrer ilkesi ve üçüncü taraf izleme sızıntısını kontrol edin.
- Veritabanında ham belirteç yerine güvenli özetini ve belirtecin bağlı olduğu hesap, oluşturulma, son geçerlilik ve kullanım bilgilerini tutun.
- Sıfırlama sayfası açıldıktan sonra belirteci adres çubuğunda gereksiz yere bırakmayın; uygulama destekliyorsa belirteci sunucu tarafında kısa ömürlü bir sıfırlama oturumuyla değiştirin.
- Yeni parola başarıyla kaydedildiğinde aynı belirtecin ikinci kez çalışmadığını ve önceki sıfırlama belirteçlerinin geçersizleştiğini doğrulayın.
- Geçersiz isteklerde hesap varlığını açıklamayan hata verin; ancak kullanıcıya yeni bir sıfırlama bağlantısı istemek için anlaşılır bir sonraki adım sunun.
Aşağıdaki ayrım, tasarım kararını hızlıca kontrol etmeye yardımcı olur:
| Kontrol | Uygun davranış | Riskli davranış |
|---|---|---|
| Belirteç | Rastgele, uzun ve öngörülemez | Kullanıcı adı veya zaman bilgisiyle üretilmiş kısa kod |
| Kullanım | Tek kullanımlık ve hesapla bağlı | Aynı bağlantının tekrar tekrar çalışması |
| Süre | Sınırlı geçerlilik ve süresi dolunca yeni istek | Süresiz veya çok uzun süre aktif bağlantı |
| Taşıma | HTTPS ve beklenen alan adı | Şifresiz HTTP veya farklı alan adına yönlendirme |
Bağlantı e-posta istemcisinde açılmıyorsa önce adresin değiştirilmediğini ve alan adının doğru olduğunu kontrol edin. Bağlantı çalışıyor fakat ikinci kez de parola değiştiriyorsa tek kullanımlılık kontrolü eksiktir. Süresi dolmuş bağlantı hâlâ işlem yapabiliyorsa sunucu tarafındaki son geçerlilik denetimi uygulanmıyor demektir; yalnızca arayüzde bağlantıyı gizlemek yeterli değildir.
Sık sorulan sorular
Sıfırlama bağlantısı kullanıcıyı otomatik olarak giriş yaptırmalı mı?
Genellikle hayır. Bağlantı yalnızca parola yenileme yetkisi vermeli, parola başarıyla değiştirildikten sonra normal giriş veya kontrollü bir oturum oluşturma süreci uygulanmalıdır. Otomatik giriş kullanılacaksa bunun ayrı bir tehdit modeliyle değerlendirilmesi gerekir.
Kullanıcı aynı anda birkaç sıfırlama isteği gönderirse ne olur?
En yeni bağlantıyı geçerli bırakıp önceki belirteçleri iptal etmek daha kolay denetlenir. Böylece eski e-postayı ele geçiren veya bulan biri daha sonra kullanamaz.