2013-03-01 2 views
3

나는 스팸봇을 걸러 낼 수있는 한 가지 방법을 읽고 의견 (조언)을 얻고 싶다.직접 액세스 할 수없는 로그인 폼이 봇을 막는 데 도움이됩니까?

측정 값은 다음과 같습니다.

1) 로그인 폼에 직접 액세스 할 수 없습니다. 내 말은 누군가가 www.domain.com/login.php에 들어가면 색인이나 다른 것으로 리디렉션 될 것입니다.

2) index.php에는 버튼 로그인입니다. 방문자가 로그인을 클릭하면 팝업 로그인 양식이 나타납니다. 로그인시 $ _SERVER [ "HTTP_REFERRER"]를 확인합니다. login.php가 아닌 경우 오류 (실패)

그런 측정 방법이 유용합니까? $ _SERVER [ "HTTP_REFERRER"] 대신 다른 것을 사용할 수 있습니까? 그런 방법이 합리적입니까?

+0

리퍼러에 의존하지 않습니다. 브라우저에서 쉽게 변경하거나 심지어 끄기 만 할 수 있습니다. 사람들이 login.php 페이지를 직접 방문하지 않도록하려면, 세션을 사용하여 변수를 저장하고 login.php에 존재하는지 확인하십시오. –

+0

은 이와 비슷한 것입니까? if (isset ($ _ SESSION)! = $ _SESSION [ 'username_hash']) {exit; – user2118559

+0

다음과 같은 것이 더 좋을 수도 있습니다 : index.php'$ _SESSION [ 'visitedIndex'] = true;'그리고 login.php'if (! _ isset ($ _ SESSION [ 'visitedIndex'])) {header ("location : index.php ");}' –

답변

1

나는 다음과 같이 말하고 싶습니다. NOT REALLY. 그러나 더 나은 해결책이 있습니다, 아래를보십시오.

문제는 좋은 봇이 인간이 할 수있는 모든 것을 할 수 있다는 것입니다. 대부분의 로봇은 로그인 시스템이 어떻게 동작 하는지를 알고 있기 때문에 인간보다 "더 좋다"고합니다! 봇을 방지하기 위해 JavaScript/Iframe/AJAX 구조를 사용하면 텍스트 입력 및 암호 입력 양식을 검색하는 주류 크롤러를 도울 수 있습니다. 또한 사이트에서 간접적 인 액세스가 가능한 초소형 로그인 양식을 사용한다고해도 누군가가 정확하게 해당 사례에 맞는 봇을 만들 수 있습니다.

이 문제에 대한 좋은 해결책 :

  1. 시간 지연 로그인 차단제를 사용! 중요한 로그인 실패 횟수 이후에 로그인 시도를 지연하고 마지막으로 차단하는 방법에 대한 자습서가 있습니다. http://www.codedevelopr.com/articles/throttle-user-login-attempts-in-php/

  2. 최초 로그인 실패 후 고급 보안 문자를 사용하십시오.

  3. 정말 나쁜 사람들에게 : 특수 IP에서 대량의 로그인 실패가 발생하면이 IP를 차단하십시오. 이것은 상당히 발전되었지만 일반적인 관행입니다.

는 (참고 :이 튜토리얼의 저자는 여전히 수년간 오래된되고는 mysql_query를 사용하면 mysqli 또는 PDO와 함께 할 것이다..)

관련 문제