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
그런데,
그런 보통의 경우가 아닌 특수한 환경이나 특이한 경우에는 이게 또 문제가 될 때가 있다.
'Tech: > .NET·C#' 카테고리의 다른 글
SEED 활용 - 전자서명 (6) | 2014.03.26 |
---|---|
SEED C# 소스 (33) | 2014.03.25 |
AjaxFileUpload 한글 파일명 관련 버그 (2) | 2014.02.28 |
AjaxFileUpload와 IE 버전 (0) | 2014.02.07 |
IE에서 AjaxToolkit DropShadow 스타일이 제대로 먹지 않을 때 (0) | 2014.01.27 |