악성 봇이 스팸을 게시하지 못하도록 방지


15

오용으로 인해 사이트가 폐쇄 된 것을 기억 하며 봇에 일부가 있는지 궁금합니다. 봇이 내 사이트에 무언가를 게시하는 경우 어떻게 싸울 수 있습니까? 쿠키를 설정하고 JavaScript + 타임 스탬프 및 서명을 통해 쿠키를 변경하려고 생각했습니다 (그래서 어제 쿠키는 오늘과 다음 주에 사용할 수 없습니다).

나는 대부분의 사람들 / 봇이 봇에서 JavaScript를 활성화하는 대신 다른 사이트를 사용한다고 확신합니다.

다른 무엇을 할 수 있습니까? 스팸을 무작위로 게시하는 일반 봇에게는 매일 POST 한도 및 허니팟이 있다고 생각합니다.

답변:


13

다음을 포함한 여러 가지 작업을 수행 할 수 있습니다.

  1. 봇만 볼 수있는 가짜 필드를 놓는 것. 그런 다음 해당 필드가 나머지 양식과 함께 제출되면 무시하고 원하는 경우 금지 할 수 있습니다. 숨겨진 링크를 따르는 나쁜 봇을 잡을 수도 있습니다 .

  2. reCAPTCHA 와 같은 보안 문자 사용

  3. 사용자가 5 + 3과 같은 질문에 대답해야하는 필드를 사용하십시오. 모든 사람이 대답 할 수 있지만 봇은 필드 이름에 따라 필드를 자동으로 채우므로 수행 할 작업을 알 수 없습니다. 따라서 해당 필드가 잘못되었거나 누락 된 경우 제출이 거부됩니다.

  4. 토큰을 사용하여 세션에 넣고 양식에 추가하십시오. 토큰이 양식과 함께 제출되지 않거나 일치하지 않으면 자동화되어 무시 될 수 있습니다.

  5. 동일한 IP 주소에서 반복 제출을 찾으십시오. 양식에 너무 많은 요청이 없어야하지만 갑자기 봇이 공격을 당했을 경우 IP 주소를 일시적으로 차단하는 것을 고려해야합니다.

  6. Askimet을 사용하십시오 . 스팸 식별에 탁월합니다.


5
+1-이상적으로는 위에 나열된 제안 사항을 사용자에게 친숙한 방식으로 구현합니다 (예 : 사용자가 자바 스크립트를 사용하지 않도록 설정하여 자바 스크립트 기반 인증에 실패한 경우 사용자에게 보안 문자 표시)
danlefree

6

존 콘데 (John Conde)는 좋은 접근 방식을 많이 설명합니다. 안티 봇 / 스팸 방지 기술을 선택할 때의 문제는 효율성과 편리함의 균형을 유지하는 것입니다. 의견이나 메시지를 게시 할 때마다 보안 문자를 작성해야하는 것이 매우 불편하지만 가입시 보안 문자 만 필요하면 스패머를 방해하지 않는 경우가 있습니다.

수동 기술 중 일부는 인간의 행동이 필요하지 않기 때문에 좋은 대안입니다. 문제는 봇이 점점 더 정교 해지고 있고, 봇이 보안 문자를 해결할 수 있다면 확실히 JS와 CSS를 처리 할 수 ​​있다는 것입니다. 따라서 봇 트랩 필드를 숨기려면 덜 명확한 CSS를 사용하는 등 약간의 독창성을 발휘해야합니다.

그러나 귀하의 질문에 따르면, 요점은 봇 방지 사이트를 만드는 것이 아니라 봇 사용자가 다른 쉬운 대상을 선택하기에 충분한 억제력을 만드는 것입니다. 따라서 여기에 필요한 것은 사이트마다 다르며 시행 착오 테스트가 필요할 수 있습니다. 가장 눈에 잘 띄지 않는 기술을 먼저 시도합니다.

마지막으로, 사이트의 스팸을 제거 할 수있는 또 다른 방법은 피어 중재를 사용하여 봇이 제출 한 주석 또는 수동으로 제출 된 스팸을 제거하는 것입니다.


동료 중재의 아이디어를 설명 할 수 있습니까? 일반 사용자가 중재자 권한을 얻는 것과 관련이 있습니까? 아니면 어떻게 생각해야합니까?
0xC0000022L

@STATUS_ACCESS_DENIED : 답장을 늦게 미안하지만 피어 중재는 기본적으로 digg, slashdot, stackexchange 등과 같은 것으로 사용자가 긍정적 또는 부정적 피드백을 통해 사이트의 콘텐츠를 조정할 수 있습니다. 따라서 충분한 사용자가 콘텐츠에 대해 부정적인 피드백을 줄 때 자동으로 숨겨 지거나 검토 용으로 플래그가 지정되도록 시스템을 자동화 할 수 있습니다. StackExchange와 같은 사이트에서 사용자는 댓글 / 응답을 스팸으로 표시하여 관리자의 관심을 끌 수 있습니다. 이것은 유료 관리자가해야 할 일을 줄입니다.
Lèse majesté

감사. 물론 이것은 충분한 사용자가 귀찮게 피드백을 줄 수있는 트래픽이 많은 사이트에서만 작동합니다.)
0xC0000022L

1

John Conde가 그의 # 1)에서 언급하고 언급했듯이 허니팟은 대부분의 경우와 대부분의 웹 사이트에서 매우 잘 작동 할 수 있습니다. 봇에 의해 수행되면 John이 언급 한 다른 방법 중 하나를 수행 할 수 있습니다. 그러나 솔직히 사이트의 트래픽이 적거나 평균 트래픽이면 트릭을 수행해야합니다.

예를 들어, 내가 가장 좋아하는 것 중 하나 :

<form action="/process-form">
<input name="email" placeholder="Enter Your Email">
<input name="email_address" placeholder="Enter Your Email" style="display:none;">
<input type="submit" value="Submit"></form>

이제 양식이 제출되면 매우 많은 비율의 봇이 "이메일"과 "이메일 _ 주소"를 모두 채 웁니다. 그러나 사람은 "이메일 _ 주소"가 아니라 "이메일"이라는 이름 만 채 웁니다. 따라서`/ process-form '코드에서 email_address가 비어 있는지 확인해야합니다.

간단하고 효과적입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.