2011-02-12 5 views
4

CURL을 사용하여 원격 PHP 스크립트에 로그인 페이지가 로그인되지 않도록하는 데 사용할 수있는 방법은 무엇입니까? 리퍼러와 사용자 에이전트는 CURL로 설정할 수 있기 때문에 확인하지 않습니다. 이상적인 해결책은 CAPTCHA를 사용하지 않고이를 해결하는 것입니다. 이것이 가능한지 알아 내려고 시도하는 것이이 질문의 핵심입니다.PHP CURL을 사용하는 원격 스크립트가 웹 사이트에 로그인하지 못하도록 방지합니다.

+3

왜 cURL 액세스를 허용 하시겠습니까? 그렇게 큰 거래라면 reCAPTCHA를 추가하십시오. –

답변

6

한 가지 방법은 로그인 양식의 일부 자바 스크립트를 포함하고 양식 가능성이 성공적으로 제출 될 수 있도록하는 자바 스크립트를 실행하지 않는 한 그것을 확인하는 것입니다 . 이렇게하면 CURL에없는 JavaScript가 켜져있는 사용자 만 로그인 양식을 사용할 수 있습니다. 필요한 JavaScript가 매번 다른 질문/응답 (예 : http://www.ohdave.com/rsa/과 같은 것을 사용하는 등)을 사용하면 폼에 올바르게 설정된 값이 있는지 여부가 JavaScript가 실행되었음을 나타내는 좋은 증거가됩니다.

모든 자동화 된 스크립트를 중지 할 수는 없지만 실제 브라우저 엔진을 구동하는 스크립트를 작성하기는 쉽고이 테스트를 통과하게됩니다.

4

간단히 방지 할 수있는 방법은 없습니다. 스크립트가 사용자 이름과 암호를 알고 있으면 로그인 할 수 있습니다.

자동 로그인이 읽을 수 없도록 실제 captcha를 사용할 수 있지만 실제 사용자에게는 부담이됩니다.

로그인을 시도하는 데 익숙하지 않은 경우 몇 번의 시도 후에 몇 가지 추가 정보가 필요할 수 있습니다.

  • 계정을 비활성화하고 내가 제대로 알아 보았 경우
  • 여러 실패한 시도
+0

좋은 답변입니다. 로그인 페이지에서 JavaScript를 사용하고 cURL이 작동하기 어렵다는 것을 확인하기 위해 일부 토큰 등을 사용할 수 있지만 궁극적으로 웹 브라우저처럼 작동하므로 cURL을 차단할 수 없습니다. 귀하의 사이트를 사용하려면 JavaScript가 필요하다는 사실은 대개 죄입니다. –

1

을 후 보안 문자를 필요 이메일을 통해 재활이 필요합니다 로그인 스크립트를 실행할 것을

  • 사용자가 로그인 한 페이지를
  • 로그인 스크립트가 원격 cURL 스크립트에 의해 해킹되었습니다 ...

해결책 로그인 페이지에 숨겨진 요소 비밀 코드가있는 비밀 요소 세션에서이 비밀 코드를 저장하고 로그인 스크립트에서이 코드의 세션을보고 스크립트에 게시 된 것과 비교하여 동일해야 함 ... 분명 세션을 진행합니다

주제에 대한 자세한

: http://en.wikipedia.org/wiki/Cross-site_request_forgery

+1

세션을 사용하는 cURL을 방지 할 수 없습니다. 쿠키를 수락하고 보내는 약간 더 복잡한 스크립트 만 있으면됩니다. – Jacob

0

cURL은 다른 클라이언트 (예 : 브라우저)와 다를 바 없습니다. 숨겨진 입력 필드에서 세션에 연결된 nonce를 사용하여 POST 요청이 직접 이루어지지 않도록 할 수 있지만 그 주위에는 여전히 방법이 있습니다. 브 루트 포스 공격이 걱정된다면 분당 로그인 시도 횟수를 제한하는 것도 좋은 생각입니다.

관련 문제