其實驗證碼的作用非常簡單,就是為了防止別人用程序惡意的大批量提交、注冊信息,還有比如在論壇惡意灌水發廣告等等行為。所以基本上可以說驗證碼限制的都是不好的行為。有的驗證碼雖然難以識別,但是我們人眼仔細看看還是可以分辨的,如果驗證碼做的比較工整,那么程序也就非常容易識別出來了,如此一來驗證碼也就形同虛設。專業的解釋驗證碼(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自動區分計算機和人類的圖靈測試)的縮寫,是一種區分用戶是計算機和人的公共全自動程序。可以防止:惡意破解密碼、刷票、論壇灌水,有效防止某個黑客對某一個特定注冊用戶用特定程序暴力破解方式進行不斷的登陸嘗試。
那么為啥要驗證?驗證的是啥
在沒有驗證碼的時代,想要在論壇上發帖,只需輕輕敲一下回車鍵。然而,這也給惡作劇者和黑客提供了同樣的便捷,他們通過編寫大量、重復編寫信息的程序,偽裝成人類用戶,肆無忌憚地朝網絡上傾斜大量的、無意義的“僵尸”信息,垃圾郵件、垃圾廣告、垃圾評論到處亂飛。論壇被灌水,有用的信息很快會被淹沒,很多網站的正常運營遭到破壞。除此之外,還有數之不盡的程序機器人使用不斷嘗試的方法惡意破解密碼、惡意刷票,從中獲取非法的利益。
網站制作中經常會遇到驗證碼功能,那么到底是前端驗證還是服務器端來驗證?蘇州網站制作在這里分享下個人觀點,一是模擬用戶動作,比如鼠標點擊、字符輸入,好處是對灌水者來說屏蔽了技術細節,只關注需要做什么操作。對于這種流派,理論上滑動解鎖也是可以模擬的。
二是直接post數據,會事先抓包分析好需要的參數,然后直接向服務器提交。對于這種流派,它只關注最終的提交數據,之前有沒有滑動解鎖是完全無影響的。邏輯上,純客戶端的驗證再復雜也是無效的。最終提供驗證的,其實是在服務端,客戶端只是顯示了一下驗證碼而已。JS完全是由客戶端實現的,任何JS操作都可以被模擬,所以不能單純用JS來實現驗證碼。
所以蘇州網站建設個人認為,驗證碼真正的目的是為了安全性的考慮,那么真實有效的驗證也應該在服務器端驗證。應該是后臺生成的驗證碼到前端顯示,前端傳輸數據到后端進行驗證,前端再根據后端的驗證結果顯示。當然大牛們可能要噴了,前端也有實力達到很高的安全性,不過小編還是習慣后端驗證。