2010-11-28 4 views
1

일반 웹 브라우저뿐만 아니라 긁는 도구와 스팸봇이 만들어지지 않을 수도 있습니다. 이를 염두에두고, 요청을하는 방식을보고 노골적인 스팸봇을 발견 할 수있는 방법이있는 것처럼 보입니다.스팸 봇을 탐지하는 데 사용할 수있는 HTTP 헤더 필드가 있습니까?

HTTP 헤더를 분석하는 방법이 있습니까? 아니면 그냥 파이프 - 꿈입니까?

Array 
(
    [Host] => example.com 
    [Connection] => keep-alive 
    [Referer] => http://example.com/headers/ 
    [Cache-Control] => max-age=0 
    [Accept] => application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 
    [User-Agent] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7 
    [Accept-Encoding] => gzip,deflate,sdch 
    [Accept-Language] => en-US,en;q=0.8 
    [Accept-Charset] => ISO-8859-1,utf-8;q=0.7,*;q=0.3 
) 
+0

신뢰할 수있는 서명이있는 로봇이 몇 개 있습니다. 대부분의 양식 스팸 크롤러는 재생 공격을 수행하거나 ActiveX 좀비입니다. (하지만 대상 사이트에 따라 달라집니다.)'Referer'-linkbots는 점점 희귀 해지고 있습니다. 그러나 "나쁜 행동"을 조사하십시오. – mario

답변

2

스팸 봇을 쓰고 있다면 정상적인 브라우저의 헤더를 가짜로 만들 수 있습니다. 따라서 이것이 가능한 접근 방식이 아닌지 의심 스럽습니다.

도움이 될 몇 가지 다른 제안 대신

  • 사용 보안 문자
  • 즉 단순하지만 효과적인 트릭은 CSS 규칙에 의해 숨겨진 텍스트 입력을 포함하는 것입니다, 너무 짜증나 경우; 사용자는 그것을 볼 수 없지만 스팸 봇은 일반적으로 모든 CSS 규칙을 구문 분석하고 적용하지 않으므로 필드가 표시되지 않고 그 안에 무언가를 넣을 것입니다. 양식 제출시 필드가 비어 있는지 확인하고 무시한 경우 무시하십시오.
  • 양식에 nonce를 사용하십시오. 양식을 렌더링 할 때 사용 된 nonce가 제출되었을 때와 동일한 지 확인하십시오. 이것은 모든 것을 포착하지는 못하지만 첫 번째 장소에서 양식을받은 무언가에 의해 게시물이 만들어 졌는지 확인합니다. 양식이 렌더링 될 때마다 nonce를 이상적으로 변경하십시오.
+0

nonce = * 번호는 한 번 사용됩니다. 넌세 *는 매번 바뀌어야 할 필요가 있거나 넌센스가 아닙니다. 그렇지 않으면 +1. :) – deceze

+0

당신은 당연히 정확합니다. 그러나 양식을 성공적으로 제출할 때까지 (예 : 재 장전 한 경우) 잘못 재사용하는 것은 여전히 ​​이상적이지 않습니다. 따라서 이상적으로 말합니다. 이 경우에는 양식보기마다 한 번이 아니라 양식 제출마다 한 번 사용됩니다. –

+0

nonce 또는 "form token"을 사용하면 CSFR도 보호됩니다. 양식없이 양식을 표시하지 마십시오. – Xeoncross

1

이 방법으로 모든 봇을 찾을 수는 없지만 일부를 잡거나 적어도 UA가 봇일 확률을 얻고 다른 방법과 함께 사용합니다.

일부 봇은 Accept-CharsetAccept-Encoding 헤더를 잊어 버립니다. AcceptUser-Agent의 조합 (예 : IE6에서는 XHTML을 요청하지 않으며 Firefox는 MS Office 유형을 광고하지 않음)을 사용할 수 없습니다.

프록시를 차단할 때 헤더를 수정할 수 있으므로 프록시를주의하십시오. Via 또는 X-Forwarded-For 헤더가 표시되는 경우 보완하는 것이 좋습니다.

이상적으로 수동으로 규칙을 작성하는 대신 베이지안 분류자를 사용할 수 있습니다. 관련 헤더를 함께 결합하고이를 분류 자의 단일 "단어"로 사용하는 것만 큼 간단 할 수 있습니다.

+0

아이디어를 제공해 주셔서 감사합니다. – Xeoncross

관련 문제