php 圖形驗證碼,正確構思

php 圖形 驗證碼 圖片 驗証碼 image verify code

圖形驗證碼有很多地方都用的到,註冊、申請、登入、發文、回覆 ● ● ● 等頁面,主要是用來防堵暴力取得帳密【盜號】,還有防治發廣告機。

圖片是不能copy裡面的英文數字,也不像html或js代碼那樣,可以用一定的方式來反譯及破解,只需要將圖片內容加上浮動效果及些許干擾碼,這樣要解析圖片內的東西就非常不易了。

 
有些網站貪圖方便,註冊及登入頁沒圖形驗證碼,其實很抖,密碼都要設到12元以上,還頗為麻煩,畢竟不是發文,註冊及登入算一次性作業,如果你是站長,建議可以用一下圖形驗證碼。

範例檔案,請下載 sample003.zip 這個file:

drive.googleonedrive.live【下載教學】

zip解壓後,用 notepad++ 之類的文字處理軟體開啓即可。

這是個簡單的php圖形驗證碼,隨機抓6個英文字小寫,後將值放到session存放,並生成圖片顯示於提交頁。



按下提交後,post和session這2個值,如果一樣,就ok通過。



避免被瀏覽器解析,代碼用成圖片:





我想大家在網上找,php驗證碼code時,不少範例都是上述這樣寫法,我指的是構思方面,不是指內容部份,有看出什麼缺點嗎?

這樣的寫法,很容易失效,而且不用圖形解析,就會被暴力灌水機突破,為何呢?

因為用來產生隨機值的部份是在圖片生成php內,那些灌水機只要攻擊用來檢查session與post值的php就好,不去執行圖片生成php,session內的值就不會改變,只要循序匹配,早晚會通過。

正確的寫法,應該是檢查值與隨機產生值的部份,寫在同一個php文件內,只要匹配錯誤就重刷比對值,而生成圖片的php文件,只單純抓值顯示,這樣才ok。



上圖修改後的範例文件,請下載 sample004.zip 這個file:

drive.googleonedrive.live【下載教學】

zip解壓後,用 notepad++ 之類的文字處理軟體開啓即可。

如果要參考或拿來使用,請使用 sample004.zip 內的方式。

大略說明就先這樣了,如大家有什麼要補充的,可在此回覆及討論。
 

其他參考文章 → 教你如何使用google的reCAPTCHA驗證碼
 

留言

秘密留言