Click or drag to resize

웹 폼 검증 코드 이미지

웹 폼 검증 코드는 자동화된 폼 해킹 툴로 부터 폼 입력을 막기 위해 사용자로 하여금 이미지로 출력되는 검증 코드를 입력받는데 사용됩니다. 검증 코드 이미지는 글자 회전, 색상 변경, 노이즈 추가 등을 이용해 사람은 인지할 수 있으나 자동화된 프로그램은 인식할 수 없도록 만들어 집니다.

검증 코드 입력 폼(verify_form.asp)

5개의 알파벳을 랜덤으로 선택해 검증 코드를 생성한 후 ASP의 Session에 저장해 웹 브라우저와 같은 클라이언트에서는 확인할 수 없게끔 처리합니다. Session에 저장된 값은 verify_image.asp에서 참조해 실제 이미지를 생성합니다.

verify_submit.asp에서는 Session("vcode") 값과 사용자가 입력한 값을 비교해 일치할 경우만 폼 데이터를 처리하면 됩니다.

ASP
<%
Dim vcode, chcode, i
'램덤 검증 코드를 생성해서 세션에 저장한다.
vcode = ""
Randomize
For i=1 To 5
    chcode = Int((90 - 65 + 1) * Rnd + 65)
    vcode = vcode + Chr(chcode)
Next
Session("vcode") = vcode
%>
<html>
<body>
    <form action="verify_submit.asp" method="POST">
        검증 코드: <input type="text" name="vcode"><p>
        <img src="verify_image.asp"><p>
        <input type="submit" name="submit" value="Submit">
    </form>
</body>
</html>
검증 코드 이미지 생성(verify_image.asp)

Session("vcode")에 저장된 검증 코드와 DrawVerificationCode 메서드를 사용해 검증 코드 이미지를 생성합니다. DrawFlag 인자에 7을 지정해 문자를 회전시키고, 노이즈와 선을 추가해 자동 인식이 힘든 이미지를 생성합니다. 생성한 이미지를 Download 오브젝트를 사용해 웹 브라우저로 전송한 후 더 이상 필요없는 이미지를 디스크에서 제거합니다.

ASP
Dim Image, Status, Download, VCodeFile, fso
Set Image = Server.CreateObject("TABSUpload4.Image")

'고유 파일 이름을 생성한다.
VCodeFile = "C:\temp\" + Image.ID + ".png"
'검증 코드 이미지를 생성한다.
Status = Image.Create(180, 43, "#ffffffff")
If Status = Ok Then
    image.SetFont "Times New Roman", 22, 0
    image.DrawVerificationCode 10, Session("vcode"), 7
    image.Save VCodeFile, 0, False

    '검증 코드 이미지를 전송한다.
    Set Download = Server.CreateObject("TABSUpload4.Download")
    Download.FilePath = VCodeFile
    Download.TransferFile False, False

    '전송 후 이미지 파일을 삭제한다.
    Set fso = Server.CreateObject("Scripting.FileSystemObject")
    fso.DeleteFile VCodeFile
End If