2012-10-25 1 views
0

captcha에서 일반적으로 발생하는 현상은 한 단어가 표시되고 사용자가 captcha의 유효성을 검사하기 위해 해당 단어를 입력해야한다는 것입니다. 그러나이 경우 내가 원하는 것은 내 captcha가 슬로건 (즉 문장)으로 구성되며 매번 컴퓨터가 다음과 같이 묻는 것입니다. 슬로건의 첫 단어를 입력하십시오. 다음에 묻습니다 , 세 번째 단어를 입력 무작위로 그래서 ... 사람이 내게 어떻게 이런 식으로 아이디어를 제공 할 수 있습니까?vbscript를 사용하여 동적 captcha를 만드는 방법

답변

0

기존 ASP에서 CAPTCHA를 만든 방법은 다음과 같습니다. 양식이 사용자에게 표시 될 때 난수와 질문 및 답변을 생성합니다.

난수는 질문에 대한 답변을 저장하는 세션 변수의 이름으로 사용됩니다. 나는 또한 난수의 값을 가진 숨겨진 필드를 추가한다. 이 난수는 한 사용자가 동일한 세션 변수를 사용하지 않고 여러 창/탭에 여러 양식을 표시 할 수있게합니다. 또한 페이지를 해킹하려고하는 사람은 누구나 페이지를 검색해야만 게시 할 수 있으므로 해킹하기가 조금 더 어려워집니다.

사용자가 양식을 제출할 때 숨겨진 필드 값을 얻은 다음 세션 변수에 저장된 응답을 가져오고 세션 변수가 제거되어 '봇이 답변을 추측 할 때 여러 번 시도 할 수 없게됩니다. 그런 다음 사용자의 대답을 사용자가 입력 한 것과 비교할 수 있습니다. 그들이 올바른 것을 얻지 못하면 양식이 다시 표시되고 새로운 난수와 응답이 생성됩니다.

형태로이 같은 것이 생성 된 코드 :

'get your question and answer 
strQuestion = "My question" 
strAnswer = "answer" 

Randomize 
strVarName = Int((999999 - 100000 + 1) * Rnd() + 100000) 
Session(strVarName) = strAnswer 



<input type="hidden" name="varname" value="<%= strVarName %>" /> 

형태로이 같은 일 qould sbumitted되는 코드 :

strVarName = Request.Form("varname") 
strUserAnswer = Request.Form("answer") 
strRealAnswer = Session(strVarName) 
Session.Items.Remove(strVarName) 

If strUserAnswer <> strRealAnswer Then 
    'invalid response 
    'show form again with new answer and session 
End If 
관련 문제