AJAX Control Toolkit이 제공하는 여러가지 그저 그런 컨트롤 중에서, 유독 아주 획기적이고 참신한 아이디어라고 내 스스로 격찬을 했던 NoBot!


보통 CAPTCHA라고 해서, 봇 프로그램들을 이용한 대량 가입/변경 트래픽 유발이나 스팸 게시물 등록을 차단하는 기능이 있는데, 그건 그림을 보고 그림에 적힌 숫자나 영문자를 입력하는 초보적이면서도 강력한 기능이었다.


그런데 NoBot은 그런 것을 할 필요도 없이 사람의 웹 사용 패턴/습관을 기준으로 봇인지 사람인지 자동으로 판단하는데, 아주 효과적으로 쉽게 판단할 수 있다, 신기하게도.


기본값으로 정의된 세 가지 설정을 보면 확실히 아! 그렇구나! 하는 걸 알 수 있다.

  • 보통의 사람은 회원 가입이나 변경 페이지가 보인 뒤 5초 이내에 서버로 요청을 보내는 경우는 거의 없다.
  • 그러나 봇 프로그램은 늘 그런다.
  • 보통의 사람은 동일한 PC에서 회원 가입이나 변경을 1분5회 이상 반복하는 경우가 거의 없다.
  • 그러나 봇 프로그램은 1분에 수십 회도 반복한다.

NoBot은 바로 위 보라색 밑줄 그은 부분 세 가지 요소를 설정값으로 빼내서 체크하는 방식이다.



>> 참조: http://www.asp.net/AjaxLibrary/AjaxControlToolkitSampleSite/NoBot/NoBot.aspx


정상으로 판단한 경우에는 Valid라는 값을 리턴하는데, 그 밖에도 여러 가지 값을 리턴한다.


리턴 코드(원문)

Explanation of possible responses:

  • Valid: All NoBot tests passed; user appears to be human
  • InvalidBadResponse: An invalid response was provided to the challenge suggesting the challenge script was not run
  • InvalidResponseTooSoon: The postback occurred quickly enough that a human was probably not involved
  • InvalidAddressTooActive: The source IP address has submitted so many responses that a human was probably not involved
  • InvalidBadSession: The ASP.NET session state for this session was unusable
  • InvalidUnknown: An unknown problem occurred


리턴 코드(번역)

  • Valid - 모든 테스트를 통과함.(인간의 의한 PostBack)
  • InvalidBadResponse - 페이지 로드 시 Session과 ViewState에 저장된 키 값을 비교해 다를경우 리턴
  • InvalidResponseTooSoon - 인간이라면 할 수 없는 빠른 포스트백이 발생할 경우 리턴
  • InvalidAddressTooActive - 동일한 IP에서 제한된 시간안에 너무 많은 PostBack이 발생할 경우 리턴
  • InvalidBadSession - 세션에 대한 ASP.NET session state를 사용할 수 없는 경우 리턴
  • InvalidUnknown - 알려지지 않은 문제가 발생할 경우 리턴


마침, 검색해보니 한글로 설명해 놓은 블로그도 하나 있었다(위 한글 번역 출처):


>> 참고: http://neovader.tistory.com/m/post/view/id/56



그런데,

그런 보통의 경우가 아닌 특수한 환경이나 특이한 경우에는 이게 또 문제가 될 때가 있다.


예를 들어 공유기를 사용하여 여러 명이 함께 이용하는 환경인 경우에는 위 "동일한 PC"의 조건이 걸려 버린다. 그래서 실제로는 서로 다른 PC와 서로 다른 사람이지만 1분에 5회 이상 요청이 발생하게 되는 경우가 생기게 된다. 물론 일반 인터넷 웹 사이트의 경우에야 설사 그렇다 해도 같은 사이트에 같은 시각에 함께 접속하는 일은 잘 없겠지만, 사내 포털이라든가 특수한 목적으로 구성된 테스트 조직인 경우에는 충분히 그런 상황이 생길 수 있다.

그런 경우에는 위 숫자를 살짝 조정할 필요가 있다.

예를 들어 동시에 접속하여 테스트하는 사람이 40명이라면,
"동일한 PC에서 회원 가입이나 변경을 1분 5회 이상 반복하는 경우"에서 "1분40회" 정도로 조정하면 된다.
테스트가 끝나면 다시 원래 값으로 조정하는 것만 잊지 않으면 좋다.

아무튼, NoBot, 참 훌륭한 기능이다.



'Tech:  > .NET·C#' 카테고리의 다른 글

SEED 활용 - 전자서명  (5) 2014.03.26
SEED C# 소스  (23) 2014.03.25
AJAX Control Toolkit: NoBot  (0) 2014.03.21
AjaxFileUpload 한글 파일명 관련 버그  (2) 2014.02.28
AjaxFileUpload와 IE 버전  (0) 2014.02.07
IE에서 AjaxToolkit DropShadow 스타일이 제대로 먹지 않을 때  (0) 2014.01.27


Posted by 🐮Thermidor™ 떼르미

댓글을 달아 주세요



자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]