2010-11-27 3 views
2

파일이 login.php이라고 가정합니다.ajax 양식 제출에 무차별 대입 공격을 막는 방법은 무엇입니까?

login.php은 로그인 사용자 이름과 암호를 가져오고 (성공했을 경우) true를 반환하고 그렇지 않으면 false를 반환합니다. 이렇게하면 다른 페이지에서 Ajax를 통해 액세스 할 수 있습니다.

제 질문은이 방법이 무차별 공격에 취약하기 때문에 어떻게해야합니까? 나는 그것이 내 사이트의 양식에서 나오지 않는 한 접근을 거부하도록 생각하고있다. 그러나 그 일을 어떻게 할 것인가?

저는 jquery를 사용하여 ajax 호출을합니다.

+0

일반 PHP 페이지에 대한 무차별 공격은 어떻게 처리할까요? 다른 점은 없습니다. – epascarello

답변

0

브 루트 포스는 당신이 생각하는 것보다 훨씬 힘듭니다. 어떤 사람이 잘못된 암호를 사용하면 문제가됩니다. 약한 암호 (8 자)조차도 공격자가 매 초마다 백만 번의 시도를 할 수 있다면 2 년의 무차별 강제력이 필요합니다. 많은 옵션이 있습니다 :

  1. 5 분당 사용자 이름 당 로그인 시도 횟수를 제한하십시오. 이를 위해서는 데이터베이스에 지난 5 분 동안 요청 시간과 시간을 유지하는 테이블이 필요합니다. 이것은 (D) DoS 중 하나를 사용자에게 허용하는 불행한 부작용이 있습니다.
  2. 글로벌 로그인 시도 횟수 제한 ... 더 쉽지만 전체 서버의 DDoS를 쉽게 만들 수 있습니다. 나는 그것을하지 않을 것이다.
  3. IP 또는 IP/사용자의 시도 횟수를 제한하십시오. 이는 DDoS를 쉽게 허용하지 않지만 분산 된 무차별 공격을 막지는 않을 것이므로 귀찮게하지 마십시오.

다음을 수행합니다. 암호가 10 자 이상이어야합니다. 그들이 충분히 강하지 않거나 사전 단어를 기반으로 비명을 지르는 경우 (그러나 여전히 허용됨). 로그인 요청이 너무 많으면 가능한 한 빨리 개인적으로 조사하십시오.

이 모든 것은 서버 측에서 발생하며 AJAX와는 아무런 관련이 없습니다.

+2

'잘못된 암호를 사용하는 사람은 문제가 있습니다 .' : 사실은 아닙니다 : 사용자 중 한 명이 주 암호를 사용했기 때문에 서버가 손상된 것은 문제이며 다른 모든 사용자의 문제입니다 ... –

1

나는 내 자신의 사이트의 양식에서 경우를 제외하고는 접근을 거부하게 생각하고 ...하지만 당신은 어떻게

신뢰성이를 달성하기 불가능하다는 것에 대해 갈 것입니다. 어떤 종류의 captcha을 사용할 수 있습니다. 스로틀 요청은 동일한 IP의 여러 연속 요청을 삭제하도록 방화벽을 구성하여 공격자 작업을 좀 더 어렵게 만듭니다.

+0

해커가 여러 개의 (10,000 개 이상) IP에서 공격을 당하면 어떻게 될까요? – whoami

1

동일한 IP에서 3 회의 요청을받은 후 서버의 각 응답을 2 초씩 지연 시키면됩니다.

세션이나 클라이언트 측 메커니즘을 사용하지 마십시오. 로그인 요청에 임시 테이블을 사용하면 IP 및 번호 또는 실패한 인증을 저장하며 시간을 늘리는 데 사용합니다. IP에서 인증 시도없이 15 분이 지나면 항목을 플러시합니다.

그걸로 막막 힘은 악의적 인 사람에게 "조금"까다로울 수 있습니다. 사이트에 액세스하려고 시도한 지 몇 년이 걸릴 수 있습니다. 다시 유형을 재 입력해야하는 나 같은 난독증에 대한 유용성이 보존됩니다. 패스워드 4 ~ 5 번 오류없이 좋은 시간을 보내십시오 ^^

관련 문제