BÖLÜM I: Nasıl Giriş Yapılır
Kimlik doğrulaması için değerleri sunucu tarafındaki bir komut dosyasına POST yapan bir oturum açma + şifre HTML formunun nasıl oluşturulacağını bildiğinizi varsayacağız. Aşağıdaki bölümlerde sağlam pratik kimlik doğrulama kalıpları ve en yaygın güvenlik tuzaklarından nasıl kaçınılacağı ele alınacaktır.
HTTPS'ye mi, HTTPS'ye mi?
Bağlantı zaten güvenli değilse (yani, SSL / TLS kullanarak HTTPS aracılığıyla tünellenmişse), giriş formu değerleriniz açık metin olarak gönderilir; vasıtasıyla. Bu tür telefon dinleme, hükümetler tarafından rutin olarak yapılır, ancak genel olarak, şunu söylemek dışında 'sahip olunan' kablolara değinmeyiz: Sadece HTTPS kullanın.
Aslında, oturum açma sırasında telefon dinleme / paket koklamaya karşı korunmanın tek pratik yolu HTTPS veya başka bir sertifika tabanlı şifreleme şeması (örneğin TLS ) veya kanıtlanmış ve test edilmiş bir meydan okuma tepki şeması (örneğin, Diffie-Hellman) kullanmaktır. tabanlı SRP). Başka herhangi bir yöntem, gizli dinleme yapan bir saldırgan tarafından kolayca atlatılabilir .
Elbette, biraz pratik olmamaya istekliyseniz, bir tür iki faktörlü kimlik doğrulama şeması da kullanabilirsiniz (örneğin, Google Şifrematik uygulaması, fiziksel bir 'soğuk savaş tarzı' kod çizelgesi veya bir RSA anahtar üreteci dongle'ı). Doğru şekilde uygulanırsa, güvenli olmayan bir bağlantıda bile işe yarayabilir, ancak bir geliştiricinin SSL'yi değil iki faktörlü kimlik doğrulaması yapmaya istekli olacağını hayal etmek zordur.
(Yapmayın) Kendi JavaScript şifrelemenizi / özetlemenizi hazırlayın
Web sitenizde bir SSL sertifikası oluşturmanın algılanan (şimdi önlenebilir olsa da ) maliyeti ve teknik zorluğu göz önüne alındığında , bazı geliştiriciler güvenli olmayan bir tel üzerinden açık metin girişlerini geçmemek için kendi tarayıcı içi karma veya şifreleme şemalarını kullanmaya eğilimlidir.
Bu asil bir düşünce olsa da , yukarıdakilerden biriyle birleştirilmedikçe esasen işe yaramaz (ve bir güvenlik kusuru olabilir ) - yani, hattı güçlü şifrelemeyle sabitlemek veya denenmiş ve test edilmiş bir meydan okuma yanıtı kullanmak mekanizma (bunun ne olduğunu bilmiyorsanız, kanıtlanması en zor olanı, tasarımı en zor olanı ve kavramları dijital güvenlikte uygulaması en zorlarından biri olduğunu bilin).
Parolayı karma işleminin parola ifşa edilmesine karşı etkili olabileceği doğru olsa da, saldırıları, Ortadaki Adam saldırılarını / kaçırmalarını tekrar savunmasızdır (bir saldırgan güvenli olmayan HTML sayfanıza ulaşmadan önce birkaç bayt enjekte edebilirse) tarayıcıda basitçe JavaScript'teki karma işlemi yorumlayabilir) veya kaba kuvvet saldırıları (saldırgana hem kullanıcı adını, hem tuz, hem de karma şifreyi verdiğiniz için).
İnsanlığa karşı CAPTCHAS
CAPTCHA belirli bir saldırı kategorisini engellemek içindir: insan operatörü olmadan otomatik sözlük / kaba kuvvet deneme-yanılma. Bunun gerçek bir tehdit olduğuna şüphe yoktur, ancak CAPTCHA gerektirmeyen, özellikle düzgün tasarlanmış sunucu tarafı giriş kısıtlama şemaları gerektirmeyen sorunsuz bir şekilde başa çıkmanın yolları vardır - bunları daha sonra tartışacağız.
CAPTCHA uygulamalarının benzer şekilde yaratılmadığını bilin; genellikle insan tarafından çözülemezler, çoğu botlara karşı etkisizdir, hepsi ucuz üçüncü dünya emeğine karşı etkisizdir ( OWASP'a göre , mevcut sweathop oranı 500 test başına 12 $) ve bazı uygulamalar olabilir bazı ülkelerde teknik olarak yasa dışıdır (bkz. OWASP Kimlik Doğrulama Cheat Sheet ). Bir CAPTCHA kullanmanız gerekiyorsa, tanım gereği OCR açısından zor olduğundan (zaten OCR ile yanlış sınıflandırılmış kitap taramaları kullandığından) ve kullanıcı dostu olması çok zor olduğu için Google'ın reCAPTCHA'sını kullanın .
Şahsen, CAPTCHAS'ı sinir bozucu bulma eğilimindeyim ve bunları yalnızca bir kullanıcı birkaç kez giriş yapamadığında ve azaltma gecikmeleri en üst düzeye çıktığında son çare olarak kullanıyorum. Bu, kabul edilebilir olmak için nadiren yeterli olur ve sistemi bir bütün olarak güçlendirir.
Parolaları Saklama / Oturum açma bilgilerini doğrulama
Son olarak, son yıllarda yaygın olarak gördüğümüz tüm yaygın hack'lerden ve kullanıcı veri sızıntılarından sonra bu yaygın bir bilgi olabilir, ancak söylenmesi gerekir: Parolaları veritabanınızda açık metin olarak saklamayın. Kullanıcı veritabanları SQL enjeksiyonu yoluyla rutin olarak hacklenir, sızdırılır veya toplanır ve ham, düz metin şifreleri saklıyorsanız, giriş güvenliğiniz için anında oyun biter.
Şifreyi saklayamıyorsanız, giriş formundan POSTed olan login + şifre kombinasyonunun doğru olup olmadığını nasıl kontrol edersiniz? Cevap, bir anahtar türetme işlevi kullanılarak özetlenmektedir . Yeni bir kullanıcı oluşturulduğunda veya bir şifre değiştirildiğinde, şifreyi alıp Argon2, bcrypt, scrypt veya PBKDF2 gibi bir KDF aracılığıyla çalıştırırsınız ve açık metin şifresini ("doğruhorsebatterystaple") uzun, rastgele görünümlü bir dizeye dönüştürürsünüz , veritabanınızda saklamak çok daha güvenli. Bir girişi doğrulamak için, girilen parola üzerinde aynı karma işlevini çalıştırırsınız, bu sefer tuzdan geçer ve elde edilen karma dizesini veritabanınızda depolanan değerle karşılaştırırsınız. Argon2, bcrypt ve scrypt, tuzu zaten karma ile saklar. Daha ayrıntılı bilgi için sec.stackexchange adresindeki bu makaleye göz atın.
Bir tuzun kullanılmasının nedeni, kendi içinde karmalamanın yeterli olmamasıdır - hash'i gökkuşağı tablolarına karşı korumak için 'tuz' eklemek isteyeceksiniz . Bir tuz etkili bir şekilde eşleşen iki parolanın aynı karma değer olarak depolanmasını önler ve bir saldırgan bir parola tahmin saldırısı yürütüyorsa tüm veritabanının bir seferde taranmasını önler.
Kullanıcı tarafından seçilen şifreler yeterince güçlü olmadığından (yani genellikle yeterli entropi içermediğinden) ve parola tahmin saldırısı, karma değerlere erişimi olan bir saldırgan tarafından nispeten kısa sürede tamamlanabileceğinden, parola depolaması için bir şifreleme karması kullanılmamalıdır. Bu nedenle KDF'ler kullanılır - bunlar etkili bir şekilde "anahtarı uzatır" , yani bir saldırganın yaptığı her parola, karma algoritmanın örneğin 10.000 kez birden çok kez tekrarlanmasına neden olur ve bu da saldırganın parolayı 10.000 kat daha yavaş tahmin etmesine neden olur.
Oturum verileri - "Spiderman69 olarak giriş yaptınız"
Sunucu, kullanıcı veritabanınıza karşı oturum açma adı ve parolayı doğruladıktan ve bir eşleşme bulduğunda, sistem tarayıcının kimliğinin doğrulandığını hatırlamanın bir yoluna ihtiyaç duyar. Bu gerçek, yalnızca sunucu tarafında oturum verilerinde saklanmalıdır.
Oturum verilerine aşina değilseniz, şu şekilde çalışır: Rastgele oluşturulmuş tek bir dize, süresi dolan bir çerezde saklanır ve sunucuda depolanan bir veri koleksiyonuna (oturum verileri) başvurmak için kullanılır. Bir MVC çerçevesi kullanıyorsanız, bu şüphesiz zaten ele alınmıştır.
Mümkünse, oturum çerezinde tarayıcıya gönderildiğinde güvenli ve Yalnızca HTTP bayraklarının ayarlandığından emin olun. HttpOnly bayrağı, XSS saldırısı yoluyla okunan çerezlere karşı bir miktar koruma sağlar. Güvenli bayrak, çerezin yalnızca HTTPS yoluyla geri gönderilmesini sağlar ve bu nedenle ağ koklama saldırılarına karşı korur. Çerezin değeri öngörülebilir olmamalıdır. Var olmayan bir oturuma referans veren bir çerez sunulduğunda, oturumun sabitlenmesini önlemek için değeri derhal değiştirilmelidir .
BÖLÜM II: Oturum Açılmış Nasıl Kalınır - Rezil "Beni Hatırla" Onay Kutusu
Kalıcı Oturum Açma Çerezleri ("beni hatırla" işlevselliği) bir tehlike bölgesidir; bir yandan, kullanıcılar bunları nasıl kullanacaklarını anladıklarında tamamen geleneksel girişler kadar güvenlidirler; diğer yandan, dikkatsiz kullanıcıların ellerinde, herkese açık bilgisayarlarda kullanabilen ve oturumu kapatmayı unutabilen ve tarayıcı çerezlerinin ne olduğunu veya nasıl silineceğini bilmeyen çok büyük bir güvenlik riskidir.
Şahsen, düzenli olarak ziyaret ettiğim web siteleri için kalıcı girişleri severim, ancak bunları nasıl güvenli bir şekilde kullanacağımı biliyorum. Kullanıcılarınızın aynı şeyi bildiğinden eminseniz, temiz bir vicdanla kalıcı girişler kullanabilirsiniz. Değilse - iyi, o zaman giriş kimlik bilgileriyle dikkatsiz olan kullanıcıların hacklendiklerinde kendilerine getirdikleri felsefesine abone olabilirsiniz. Kullanıcılarımızın evlerine gidip, monitörlerinin kenarında sıraladıkları parolalarla facepalm indükleyen tüm Post-It notlarını koparmak gibi bir şey değil.
Elbette, bazı sistemler herhangi bir hesabın saldırıya uğramasını göze alamaz ; bu tür sistemler için, kalıcı giriş bilgilerine sahip olmanın haklı bir yolu yoktur.
Kalıcı giriş çerezleri uygulamaya karar verirseniz, bunu şu şekilde yapabilirsiniz:
İlk olarak, Paragon Girişimi'nin konuyla ilgili makalesini okumak için biraz zaman ayırın . Bir grup öğeyi doğru almanız gerekir ve makale her birini açıklamak için harika bir iş çıkarır.
Ve sadece en yaygın tuzaklardan birini tekrarlamak için , SADECE BİR ŞEY, SİZİN VERİTABANIZDA, SÜREKLİ GİRİŞ ÇEREZİ (TOKEN) KOYMAYIN! Giriş jetonu Parola Eşdeğeridir, bu nedenle bir saldırgan veritabanınıza ellerini sokarsa, açık metin giriş parolası kombinasyonlarıymış gibi herhangi bir hesaba giriş yapmak için jetonları kullanabilir. Bu nedenle, kalıcı giriş jetonlarını saklarken karma ( https://security.stackexchange.com/a/63438/5002 uyarınca zayıf bir karma bu amaç için iyi olacaktır) kullanın.
BÖLÜM III: Gizli Soruları Kullanma
'Gizli sorular' uygulamayın . 'Gizli sorular' özelliği bir güvenlik karşıtı modeldir. MUST-READ listesinden 4 numaralı bağlantıdan makaleyi okuyun. Sarah Palin'den Yahoo! güvenlik sorusunun cevabı "Wasilla Lisesi" olduğu için bir önceki başkanlık kampanyası sırasında e-posta hesabı saldırıya uğradı!
Kullanıcı tarafından belirtilen sorularla bile, çoğu kullanıcının aşağıdakilerden birini seçmesi büyük olasılıkla:
Annenin kızlık soyadı veya favori evcil hayvanı gibi 'standart' gizli bir soru
Herkesin blogundan, LinkedIn profilinden veya benzerlerinden kaldırabileceği basit bir trivia parçası
Cevap vermesi daha kolay olan soruları şifrelerini tahmin etmekten daha kolaydır. Hangi, herhangi bir iyi şifre için, hayal edebileceğiniz her soru
Sonuç olarak, güvenlik soruları neredeyse tüm biçimleri ve varyasyonlarında doğal olarak güvensizdir ve herhangi bir nedenle bir kimlik doğrulama şemasında kullanılmamalıdır.
Güvenlik sorularının vahşi doğada bile var olmasının gerçek nedeni, bir yeniden etkinleştirme koduna ulaşmak için e-postalarına erişemeyen kullanıcıların birkaç destek çağrısının maliyetini uygun bir şekilde kaydetmeleridir. Bu güvenlik ve Sarah Palin'in itibarı pahasına. Buna değer? Muhtemelen değil.
BÖLÜM IV: Unutulan Parola İşlevselliği
Unutulan / kaybolan kullanıcı şifrelerini işlemek için neden güvenlik sorularını asla kullanmamanız gerektiğinden bahsetmiştim ; kullanıcılara gerçek şifrelerini asla e-posta ile göndermemeniz gerektiğini de söylemeye gerek yok. Bu alanda kaçınılması gereken en az iki ortak tuzak daha vardır:
Etmeyin sıfırlamak bir autogenerated güçlü şifre unutulmuş bir parola - söz, parlak sarı üzerine Post-It onların monitörün kenarında - Böyle şifreleri kullanıcıya bunu değiştirmek veya yere yazmak gerekir anlamına gelir hatırlamak herkesin bildiği gibi zor. Yeni bir şifre belirlemek yerine, kullanıcıların hemen yeni bir şifre seçmesine izin verin - bu zaten yapmak istedikleri şeydir. (Bunun bir istisnası, kullanıcılar, normalde bir yere yazmadan hatırlanması imkansız olan şifreleri saklamak / yönetmek için evrensel olarak bir şifre yöneticisi kullanıyorsa olabilir).
Her zaman veritabanında kayıp parola kodunu / jetonunu karma yapın. TEKRAR , bu kod bir Parola Eşdeğeri başka bir örneğidir, bu nedenle bir saldırganın veritabanınıza ellerini alması durumunda karma olmalıdır. Kayıp bir şifre kodu istendiğinde, düz metin kodunu kullanıcının e-posta adresine gönderin, ardından karma yapın, karma veritabanını kaydedin - ve orijinali atın . Tıpkı bir şifre veya kalıcı bir giriş jetonu gibi.
Son bir not: 'kayıp şifre kodunu' girme arayüzünüzün her zaman giriş formunuzun kendisi kadar güvenli olduğundan emin olun, yoksa bir saldırgan bunun yerine erişim elde etmek için bunu kullanır. Çok uzun 'kayıp parola kodları' oluşturduğunuzdan emin olmak (örneğin, büyük / küçük harf duyarlı 16 alfasayısal karakter) iyi bir başlangıçtır, ancak giriş formunun kendisi için yaptığınız aynı kısıtlama şemasını eklemeyi düşünün.
BÖLÜM V: Parola Gücünün Kontrol Edilmesi
İlk olarak, bir gerçeklik kontrolü için bu küçük makaleyi okumak isteyeceksiniz: En yaygın 500 şifre
Tamam, belki de liste, herhangi bir yerde herhangi bir sistemdeki en yaygın şifrelerin kanonik listesi değildir , ancak yürürlükteki bir politika olmadığında insanların şifrelerini ne kadar kötü seçeceklerinin iyi bir göstergesidir. Ayrıca, son çalınan şifrelerin kamuya açık analizleriyle karşılaştırdığınızda liste korkutucu bir şekilde eve yakın görünüyor.
Yani: Minimum şifre gücü gereksinimi olmadan, kullanıcıların% 2'si en yaygın 20 şifreden birini kullanır. Anlamı: Eğer bir saldırgan sadece 20 deneme yaparsa, web sitenizdeki 50 hesaptan 1'i kırılabilir.
Bunun önlenmesi için bir parolanın entropisinin hesaplanması ve ardından bir eşiğin uygulanması gerekir. Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) Özel Yayını 800-63 bir dizi çok iyi öneriye sahiptir. Bir sözlük ve klavye düzeni analizi ile birleştirildiğinde (örneğin, 'qwertyuiop' kötü bir paroladır), kötü seçilmiş tüm parolaların% 99'unu entropi 18 bit düzeyinde reddedebilir . Sadece şifre gücünü hesaplamak ve bir kullanıcıya bir görsel güç ölçer göstermek iyi, ancak yetersizdir. Zorla uygulanmadığı sürece, birçok kullanıcı büyük olasılıkla görmezden gelecektir.
Ve yüksek entropili şifrelerin kullanıcı dostu olması için Randall Munroe'nin Şifre Gücü xkcd önerilir.
Genel veri ihlallerinde tehlikeye giren parolalara karşı kullanıcıların şifrelerini kontrol etmek için Troy Hunt'ın Pwned API'sini kullanın.
VI. BÖLÜM: Çok Daha Fazlası - Veya: Hızlı Yangın Giriş Denemelerini Önleme
İlk olarak, sayılara bir göz atın: Şifre Kurtarma Hızları - Şifreniz ne kadar süre dayanacaktır
Bu bağlantıdaki tablolara bakacak vaktiniz yoksa, işte bunların listesi:
Bu sürer neredeyse hiçbir zaman bir abaküs ile çatlama olsanız bile, zayıf bir parolayı çözmek
Büyük / küçük harf duyarlı değilse, alfasayısal 9 karakterlik bir parolayı kırmak neredeyse hiç zaman almaz
Bu sürer neredeyse hiçbir zaman Çünkü eğer karmaşık, semboller-ve-harfler-ve-sayı, büyük ve küçük harf-şifresini kırmak için daha az 8 karakter uzunluğunda (bir masaüstü bilgisayar bir konuda 7 karakterden tüm KEYSPACE kadar arama yapabilirsiniz gün ve hatta saat)
Bununla birlikte, saniyede bir deneme ile sınırlı olsaydınız , 6 karakterlik bir şifreyi bile kırmak çok uzun sürecektir !
Peki bu rakamlardan ne öğrenebiliriz? Çok, ama en önemli bölüme odaklanabiliriz: Çok sayıda hızlı ateş ardışık giriş denemesini (yani kaba kuvvet saldırısı) önlemenin o kadar da zor olmadığı gerçeği. Ancak doğru bir şekilde önlenmesi göründüğü kadar kolay değildir.
Genel olarak konuşursak, hepsi kaba kuvvet saldırılarına karşı etkili üç seçeneğiniz var (ve sözlük saldırıları, ancak zaten güçlü bir şifre politikası kullandığınız için, bunlar bir sorun olmamalı) :
N başarısız denemeden sonra bir CAPTCHA sunun (cehennem gibi can sıkıcı ve genellikle etkisiz - ama kendimi burada tekrarlıyorum)
N başarısız denemeden sonra hesapları kilitleme ve e-posta doğrulaması gerektirme (bu, gerçekleşmeyi bekleyen bir DoS saldırısıdır)
Ve son olarak, giriş kısıtlaması : yani, N başarısız girişimden sonra girişimler arasında bir zaman gecikmesi ayarlamak (evet, DoS saldırıları hala mümkündür, ancak en azından onlar daha az olasıdır ve çekilmesi çok daha karmaşıktır).
En iyi uygulama # 1: Başarısız deneme sayısıyla birlikte artan kısa bir gecikme, örneğin:
- 1 başarısız deneme = gecikme yok
- 2 başarısız deneme = 2 sn gecikme
- 3 başarısız deneme = 4 sn gecikme
- 4 başarısız deneme = 8 sn gecikme
- 5 başarısız deneme = 16 sn gecikme
- vb.
Ortaya çıkan kilitleme süresi, önceki kilitleme sürelerinin toplamından biraz daha büyük olduğu için, bu şemaya saldıran çok pratik olmayacaktır.
Açıklığa kavuşturmak için: Gecikme, tarayıcıya yanıt döndürülmeden önceki bir gecikme değildir . Daha çok, belirli bir hesaba veya belirli bir IP adresinden giriş girişimlerinin kabul edilmeyeceği veya değerlendirilmeyeceği bir zaman aşımı veya refrakter dönemi gibidir. Diğer bir deyişle, doğru kimlik bilgileri başarılı bir girişte döndürülmez ve yanlış kimlik bilgileri gecikme artışını tetiklemez.
En iyi uygulama # 2: N başarısız denemeden sonra yürürlüğe giren orta uzunlukta bir gecikme, örneğin:
- 1-4 başarısız deneme = gecikme yok
- 5 başarısız deneme = 15-30 dk gecikme
Bu şemaya saldıran DoS oldukça pratik değildir, ancak kesinlikle yapılabilir. Ayrıca, bu kadar uzun bir gecikmenin meşru bir kullanıcı için çok can sıkıcı olabileceğini belirtmek de uygun olabilir. Unutkan kullanıcılar sizi sevmeyecek.
En iyi uygulama # 3: İki yaklaşımı birleştirmek - N başarısız denemeden sonra yürürlüğe giren sabit, kısa süreli bir gecikme, örneğin:
- 1-4 başarısız deneme = gecikme yok
- 5+ başarısız deneme = 20 sn gecikme
Veya sabit bir üst sınır ile artan bir gecikme, örneğin:
- 1 başarısız deneme = 5 sn gecikme
- 2 başarısız deneme = 15 sn gecikme
- 3+ başarısız deneme = 45 sn gecikme
Bu son şema OWASP en iyi uygulama önerilerinden (MUST-READ listesinden bağlantı 1) alınmıştır ve kısıtlayıcı tarafta olsa bile en iyi uygulama olarak kabul edilmelidir.
Bununla birlikte, genel bir kural olarak şunu söyleyebilirim: şifre politikanız ne kadar güçlü olursa, gecikmeleri olan kullanıcıları daha az rahatsız etmeniz gerekir. Güçlü (büyük / küçük harf duyarlı alfanümerikler + gereken sayılar ve semboller) 9+ karakter parolalarına ihtiyacınız varsa, kullanıcılara kısıtlamayı etkinleştirmeden önce 2-4 gecikmeli şifre denemesi yapabilirsiniz.
Bu son giriş kısıtlama düzenine saldıran DoS çok pratik olmaz. Ve son dokunuş olarak, sürekli (çerez) girişlerinin (ve / veya CAPTCHA onaylı bir giriş formunun) geçmesine izin verin, böylece saldırı devam ederken meşru kullanıcılar gecikmez . Bu şekilde, çok pratik olmayan DoS saldırısı son derece pratik olmayan bir saldırı haline gelir .
Buna ek olarak, yönetici hesaplarında daha agresif bir kısıtlama yapmak mantıklıdır, çünkü bunlar en çekici giriş noktalarıdır
BÖLÜM VII: Dağıtık Kaba Kuvvet Saldırıları
Tıpkı bir yana, daha gelişmiş saldırganlar 'faaliyetlerini yayarak' giriş kısıtlamasını atlatmaya çalışacaklar:
IP adresi işaretlemesini önlemek için bir botnet üzerindeki denemeleri dağıtma
Bir kullanıcıyı seçmek ve en sık kullanılan 50.000 şifreyi denemek yerine (kısıtlama nedeniyle yapamayacakları), en yaygın şifreyi seçecek ve bunun yerine 50.000 kullanıcıya karşı deneyeceklerdir. Bu şekilde, sadece CAPTCHA'lar ve giriş kısıtlaması gibi maksimum deneme önlemleri almakla kalmazlar, aynı zamanda başarı şansları da artar, çünkü 1 numaralı en yaygın şifre 49.995 sayısından çok daha olasıdır.
Radarın altına gizlice girmek için her bir kullanıcı hesabı için 30 saniye arayla oturum açma isteklerini aralamak
Burada en iyi uygulama , sistem genelinde başarısız oturum açma sayısını günlüğe kaydetmek ve sitenizin kötü giriş sıklığının çalışan bir ortalamasını, daha sonra tüm kullanıcılara uygulayacağınız bir üst sınırın temeli olarak kullanmak olacaktır.
Çok soyut mu? Yeniden ifade edeyim:
Sitenizin son 3 ayda günde ortalama 120 kötü giriş yapmış olduğunu varsayalım. Bunu (çalışan ortalama) kullanarak, sisteminiz küresel sınırı 3 katına ayarlayabilir - yani. 24 saatlik bir süre içinde 360 başarısız girişim. Ardından, tüm hesaplardaki başarısız denemelerin toplam sayısı bir gün içinde bu sayıyı aşarsa (veya daha da iyisi, hızlanma oranını izleyin ve hesaplanan bir eşikte tetikleme), sistem genelinde giriş kısıtlamasını etkinleştirir - yani TÜM kullanıcılar için kısa gecikmeler (yine de, çerez girişleri ve / veya yedek CAPTCHA girişleri hariç).
Ayrıca, daha fazla ayrıntı ve dağıtılmış kaba kuvvet saldırılarını engellemede zor tuzaklardan nasıl kaçınacağımız hakkında gerçekten iyi bir tartışma gönderdim .
BÖLÜM VIII: İki Faktörlü Kimlik Doğrulama ve Kimlik Doğrulama Sağlayıcıları
İstismarlar, parolalar yazılmak ve kaybolmak, anahtarları çalınan dizüstü bilgisayarlar veya kimlik avı sitelerine giriş yapan kullanıcılar olsun, kimlik bilgilerinden ödün verilebilir. Girişler, telefon görüşmesi, SMS mesajı, uygulama veya dongle'dan alınan tek kullanımlık kodlar gibi bant dışı faktörleri kullanan iki faktörlü kimlik doğrulama ile daha da korunabilir. Birçok sağlayıcı iki faktörlü kimlik doğrulama hizmetleri sunar.
Kimlik doğrulama işlemi, başka bir sağlayıcının toplama kimlik bilgilerini işlediği tek oturum açma hizmetine tamamen devredilebilir. Bu, sorunu güvenilir bir üçüncü tarafa iletir. Google ve Twitter her ikisi de standartlara dayalı TOA hizmetleri sunarken, Facebook benzer bir tescilli çözüm sunar.
ZORUNLU OKUYUN LİNKLER Web Kimlik Doğrulaması Hakkında
- OWASP Kimlik Doğrulama Kılavuzu / OWASP Kimlik Doğrulama Hile Sayfası
- Web'de İstemci Kimlik Doğrulaması Yapılması ve Yapılmaması Gerekenler (çok okunabilir MIT araştırma belgesi)
- Wikipedia: HTTP çerezi
- Yedek kimlik doğrulaması için kişisel bilgi soruları: Facebook çağındaki güvenlik soruları (çok okunabilir Berkeley araştırma makalesi)