2015-01-24 5 views
1

저는 웹 애플리케이션을 구축 중이며 bruteforce 공격을 해결하기위한 방법으로 계정 잠금에 대해 조사하고있었습니다. 이를 구현하는 가장 좋은 방법을 찾고 다음 링크왜 계정 잠금을 위해 데이터베이스 대신 세션을 사용하지 않습니까?

1. limited attempts for login and block a users account for a specific amout of time

더 많은 링크가있다

2. PHP lockout user after 3 failed log ins for 10 minutes

3. Blocking access to the login page after three unsuccessful login attempts

4. How to block user after 3 fail of submiting wrong information

에 나를 데리고 있지만, 그들은 모두 같은 일을했다 :

1. Create Database 
2. Store Login Attempt Details 
3. Add 1 to number of attempts 
4. Set timed session if No of attempts > 3/5 

그러나 이것은 나에게 생각이났습니다. 왜 아래의 방법이 더 좋지 않거나 똑같이 좋지 않습니까?

1. Set a session "[No of login attempts]" on failed login 
2. Add "1" to "[No of login attempts]" on each failed login 
3. Proceed with account lockout if "Session[No of login attempts]" is greater than 3/5 

나는 그것이 simlicity 때문에 더 좋다고 느낍니다. 데이터베이스 방법은 불필요한 오버 헤드를 추가하고, 테이블 관리와 작업.

(하나는 과거 또는 로그인 해상도 등에 실패 로그인 정보를 삭제 할 수 있습니다)하지만 누군가가이 방법

에게 추천 표시되지 않습니다

나는 무엇을 여기에서 놓치고 있냐?

+0

캡쳐는 힘을 보호합니다. –

+4

모든 봇은 모든 시도에서 세션을 지울 것입니다. –

+0

그리고 봇은 여러 컴퓨터에서 동시에 공격 할 수 있습니다. –

답변

1

몇 가지 :

  1. 세션 타임 아웃. 공격자가 기다리는 시간이 길면 실패 횟수가 줄어 듭니다.
  2. 세션을 쿠키에 연결할 수 있습니다. 이 경우 공격자가 쿠키를 삭제하면 새로운 세션 ID와 새로운 카운터 집합이 생성됩니다. 침입자가 귀하의 쿠키 구성표를 파악하면 자신의 쿠키를 만들어 원하는만큼의 세션을 확보 할 수 있습니다.
  3. 세션은 URL의 매개 변수로 추적 할 수도 있습니다. 이 경우 기본 URL로 다시 시도하면 로그인 시도가 재설정됩니다. 또한 쿠키와 마찬가지로 공격자가 세션 ID 체계를 파악할 수 있으면 많은 수의 세션 ID를 생성 할 수 있습니다.
+1

"세션이 쿠키에 묶여 있습니다"아니요 –

+2

@ 대각선 깨닫습니다. – schtever

+1

PHP 세션은 PHPSESSID 키를 사용하여 쿠키를 생성합니다. 쿠키는 쿠키를 사용합니다. – Everon