PHP kullanıcı oturum açma girişimleri Sınırlama

8 Cevap php

Ben kullanıcı oturum açma girişimlerinin sınırlamalar ile web uygulamaları gördüm.

Bir güvenlik zorunluluk olduğunu ve eğer öyleyse, neden?

Örneğin,: you had three failed login attempts, let's try again in 10 minutes!!

8 Cevap

Clarification This is a completion to the other answers. Using a good implemented captcha alongside an anti-bruteforce mechanism using sessions for example.
The questioner marked this as accepted assuming that captchas are unreadable by machines (she's almost right) and so it's getting negative points, because people think it's not a complete answer & they're right.


Ayrıca iyi bir hayata CAPTCHA kullanarak kaba kuvvet saldırılarına karşı uygulama güvenliği Enpower için alternatif bir yol olabilir. Bir wide variety of captcha providers ücretsiz olarak kullanılabilir, bir aceleniz varsa en kolay yolu deneyelim var. Ayrıca people o "oh, no! this captcha thing is not secure enough and they're right sometimes!" söyleyerek buradan var olduğunu düşünün lütfen.

"For those of you who don't know, a CAPTCHA is program that can tell whether its user is a human or another computer. They're those little images of distorted text that you translate when you sign up for Gmail or leave a comment on someone's blog. Their purpose is to make sure that someone doesn't use a computer to sign up for millions of online accounts automatically, or.." ref.

Bir keresinde, bu yaratıcı bir yaklaşım gördüm ...

Lokavt süresi katlanarak artar ..., başarısız her oturum açma girişimi için.

attempt | lockout time
======================
   1    |     2s
   2    |     4s
   3    |     8s
   4    |    16s
   5    |    32s
   6    |    64s
   7    |   128s
   8    |   256s
   9    |   512s
  10    |  1024s

Teorik olarak, kullanıcı bir hata ya da iki yapmak sağlar, ancak en kısa sürede bir "hack" girişimi olmak göründüğü gibi, korsan uzun ve daha uzun süreler için kilitli alır.

Ben kendimi bu (henüz) kullanılır, ama kavramsal oldukça fikir gibi değil. Tabii ki başarılı giriş, sayaç sıfırlanır.

Kaba kuvvet (otomatik) önlemek için kaç bir web sitesinde yapılacak girişimleri kısıtlayıcı sitenizi saldırır. Bu deneme sınırı yoksa, bir korsan birini bulana kadar şifreler tahmin tutmak için bir komut dosyası kurmak, ve bu web sunucusunun kullanılabilirliğini etkileyebilir.

Genellikle, (sizin de bahsettiğiniz gibi 10 dakika) 3 denemeden sonra kullanıcı için zaman isteyebilirsiniz, ve hesap açmak için sizinle iletişim kurmak için kullanıcıyı zorlama, 6 veya 9 ardışık tekrarlanan denemeden sonra bunları kilitleyin. Birisi zaman aşımı süresini ayarlamak için kendi komut değiştirebilirsiniz, çünkü bu yere konur.

Kullanıcıların kendi şifrelerini belirliyorsa, bazı bot / çocuk ortak şifreleri listesi ile oturum açmaya ve başarılı olur. Herhangi kullanıcıları bilmiyorum Ve, onlar gibi yönetici, simon, rico, gibi ortak isimler çalışacağız

Onlar sadece kendi ucunda kurabiye veya sorgu param kaldırabilirsiniz olarak, sadece oturumda kullanıcıya bayrak için yardımcı olmuyor. Sen IP ikisi için başarısız oturum açma denemelerinin sayısını ve adını girmeniz gerekiyor. Belki birçok kullanıcı arasında paylaşılabilir olarak IP için daha affedici.

Kendi projeleri için ben bu tür bir şey işleyen bir genelleştirilmiş 'floodcontrol' kitaplığı yazdı.

Bana zaman X miktarda yapılabilir kaç girişimleri belirlemenizi sağlar. Sadece gerçekten alışılmadık davranış yakalanmış olacağını, bu yüzden kısa bir süre içinde 'lütuf' girişimleri belirli bir sayıda sağlar.

Ben veritabanında bir kaç şey kayıt:

  • IP adresi (veya o ilk 24 bit)
  • (Yani 'arama', 'Yorum' giriş ') denendi eylem
  • Girişimi zamanı
  • Deneme sayısı (teşebbüs sayacı)

Ben kısmi bir IP adresi ve eylem karşısında sorgulamak ve bir önceki girişim belirli bir zaman penceresi içinde yapılmış ise yapılan her girişimi için o zaman ben bu girişimi için girişim sayacı artırmak. Bu nedenle eylem bloke edilecek (ve kullanıcı denemeden önce X saniye beklemek söylendi olacak - teşebbüs sayacı izin ödemesiz denemelerinin sayısını aşıyorsa o zaman ben son girişim şimdi X saniye içinde oldu ve eğer öyleyse, return false olup olmadığını kontrol edin Tekrar). Teşebbüs sayacı lütuf girişimlerinin sayısının altında ise o zaman doğru dönün ve slayt izin.

Aynı IP ile bir kişi daha sonra tarafından gelirse çok uzun zaman önce olacak, çünkü o zaman bir önceki girişimi sayısı, zorlama olmayacak.

Doğru bir giriş yaptıktan sonra başarısız girişimleri sıfırlama neredeyse tüm sistem değersiz kılar. Herhangi bir kayıtlı kullanıcı daha sonra başkasının hesap ve şifre üç tahmin yapabileceğini, daha sonra sayacı sıfırlamak için kendi ile oturum açın ve tekrar - otomatik olabilir ki, çok. Yani normal bir kayıtlı kullanıcı, örneğin, kuvvet yönetici şifreleri olabilir kaba.

Reset değil, sadece başarıyla giriş yaparak, yönetici tarafından yapılması gerekmektedir.

Mat

Gibi, botlar ve sözlük dosyaları kullanarak - - sadece hesabın parolasını tahmin etmeye çalışan birisi aşağı Evet, sofistike kaba kuvvet saldırı hesaplarını korumak için gereklidir.

Ben DB bir 'Başarısız denemeler' sayaç koyarak gitmek için en güvenli ve en kolay yol olurdu herhalde. Bu şekilde kullanıcı (çerezleri devre dışı) onu bypass olamaz. Elbette başarılı giriş sıfırlayın.