目前網絡上有許多圖片驗證碼形式,那些沒有生成圖片的驗證碼的抗破解防禦能力簡直不堪一擊;有人直接在網頁源碼裡顯示出具體的數字,然後要求訪問者輸入一個相加後的和;如3+5=多少,這樣的驗證碼新意倒有一些,不過可惜,根本沒有起到保護的作用。
flymorn改進一下以上的新意,直接把3+6=多少的形式採用asp程序生成Bmp圖片格式,並且把數字相加後的和存進session裡,加大破解的門檻;沒有一些圖形圖像學知識的人是無法破解的。代碼如下:
<%
Response.Buffer=True
Response.ExpiresAbsolute=Now()-1
Response.Expires=0
Response.cachecontrol="no-cache"
Response.ContentType="Image/Bmp"
CallCom_CreatValidCode()
SubCom_CreatValidCode()
Randomize
Dimi,ii,iii
ConstcAmount=10'數值個數
ConstcCode="0123456789"'數值範圍
DimvColorData(2)
vColorData(0)=""'黑色點要轉為彩色點,暫時不定義
vColorData(1)=ChrB(255)&ChrB(255)&ChrB(255)'白點
DimvCode(4),vCodes'產生一組任意數
Fori=0To3
vCode(i)=Int(Rnd*cAmount)'數組等於總數*隨機數
ifi=1thenvCode(i)="11"'第二位為+
ifi=3thenvCode(i)="10"'第四位為=
vCodes=vCodes&Mid(cCode,vCode(i)+1,1)'串等於串加上後續值
Next
session("checkcode")=int(Mid(vCodes,1,1))+int(Mid(vCodes,2,1))'計算相加和值並賦值給session
DimvNumberData(36)
vNumberData(0)=
"1110000111110111101111011110111101111011110111101111011110111101111011110111101111011110111110000111"
vNumberData(1)=
"1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111"
vNumberData(2)=
"1110000111110111101111011110111111111011111111011111111011111111011111111011111111011110111100000011"
vNumberData(3)=
"1110000111110111101111011110111111110111111100111111111101111111111011110111101111011110111110000111"
vNumberData(4)=
"1111101111111110111111110011111110101111110110111111011011111100000011111110111111111011111111000011"
vNumberData(5)=
"1100000011110111111111011111111101000111110011101111111110111111111011110111101111011110111110000111"