目錄算法
圖形驗證碼安全
圖形驗證碼的做用和原理服務器
圖形驗證碼的分類cookie
靜態圖形驗證碼的破解app
咱們常常在登陸app或者網頁的時候,都會須要咱們輸入圖形驗證碼上的內容,以驗證登陸。有些是純數字的圖形驗證碼,有些是字母和數字,有些是圖案,有些是數學表達式......不一樣的網站,採用的圖形驗證碼的形式也不同。那麼,圖形驗證碼究竟是什麼呢?學習
圖形驗證碼是驗證碼的一種。驗證碼(CAPTCHA)是 「Completely Automated Public Turing test to tell Computers and Humans Apart」(全自動區分計算機和人類的圖靈測試)的縮寫,是一種區分用戶是計算機仍是人的公共全自動程序。測試
做用:圖形驗證碼的主要做用是強制進行人機交互,以此來抵禦機器自動化攻擊,能夠防止惡意破解密碼、刷票、論壇灌水,有效防止黑客對某一個特定註冊用戶用特定程序暴力破解進行不斷的登錄嘗試。
原理:圖形驗證碼的問題能夠由計算機生成並評判,可是必須只有人類才能解答。因爲計算機沒法解答CAPTCHA的問題,因此回答出問題的用戶就能夠被認爲是人類。
圖形驗證碼是如今大多數網站登陸通行的方式。不一樣的網站,因爲其安全級別不同,網站開發人員掌握的技術不同,使用的圖形驗證碼的種類也不同。大致上,圖形驗證碼能夠分爲如下幾類:
傳統圖形驗證碼
主要是經過用戶輸入圖片中的字母、數字、漢字等進行驗證。
表明:大多數網站採用此種驗證形式。
特色:簡單易操做,人機交互性較好。但安全係數低,容易被破解。
廣告型的圖形驗證碼
有精美圖案,識別文本也清晰可認,專一於廣告。
表明:Solve Media,宇初驗證碼
特色:與其說是驗證碼,倒不如說是廣告位。
滑動驗證碼
按要求將備選碎片滑動到正確的位置,或者滑動圖標到末尾
表明:極驗驗證碼
特色:操做簡單,體驗好。單一緯度,容易被逆向模擬,與移動端頁面切換不兼容。
圖標選擇與行爲輔助
給出一組圖片,按要求點擊其中指定的一張或者多張圖片。
表明:點觸驗證碼、Google新型驗證碼、12306驗證碼
特色:安全性強,對於圖片、圖庫、技術要求高。
點擊式的圖文驗證與行爲輔助
經過文字提醒用戶點擊圖中相同字或者相同圖標的位置進行驗證。
表明:淘寶新型驗證碼、點觸驗證碼
特色:操做簡單,體驗良好,單一圖片區域較大,破解難度大。
智能驗證碼
經過行爲特徵、設備指紋、數據風控等技術,正經常使用戶免驗證,異經常使用戶強制驗證
表明:點觸智能驗證碼,支付寶驗證碼
特色:簡單便捷,區分人與機器、人與人、設備與設備
語音驗證碼
經過機器客服給你打電話,告訴你驗證碼
表明:滴滴驗證碼,易到驗證碼
特色:須要接聽客服電話,體驗較差,沒法破解
注意:這裏須要注意的是,Session ID銷燬的條件是用戶提交的圖形驗證碼和用戶名密碼等其餘信息正確,即登陸成功,或者是用戶手動刷新驗證碼
既然圖形驗證是用來抵禦機器自動化攻擊,防止惡意破解密碼、刷票、論壇灌水,防止黑客攻擊等威脅的一種手段。道高一尺魔高一丈,那麼惡意用戶確定會千方百計去繞過或破解圖形驗證碼,來達到其惡意的目的。圖形驗證碼面臨的安全問題來自多方面的,既有客戶端的問題,也有服務器端的問題,也有驗證碼自己的技術問題。
客戶端的安全問題
服務端的安全問題
驗證碼技術安全問題
好比如今不少類型的圖形驗證碼已經能夠經過技術手段識別繞過了,識別圖形驗證碼是計算機科學裏的一項重要課題,涉及到計算機圖形學,機器學習,機器視覺,人工智能等高深領域。
圖片灰度化和圖片二值化
傳送門——> https://blog.csdn.net/qq_36119192/article/details/86012022
文字分隔
爲了能識別出字符,須要對要識別的文字圖圖片進行分割,把每一個字符做爲單獨的一個圖片看待
標準化
對於部分特殊的驗證碼,須要對分割後的圖片進行標準化處理,也就是說盡可能把每一個相同的字符都變成同樣的格式,減小隨機的程度,最簡單的好比旋轉還原,複雜點的好比扭曲還原等等
識別
這一步能夠用不少種方法,最簡單的就是模板對比,對每一個出現過的字符進行處理後把點陣變成字符串,標明是什麼字符後,經過字符串對比來判斷類似度
最好的識別算法,就是神經網絡,神經網絡是一種模擬動物神經元工做模式的算法,神經網絡有多種不一樣的結構,可是基本架構分爲輸入層,隱含層和輸出層,輸入和輸出均爲二進制。
Python中有不少封裝好的神經網絡庫,把特徵值輸入神經網絡,再輸入是對應的什麼字符,也就是訓練的過程,隨着訓練的進行,神經網絡的內部結構會改變,逐漸向正確的答案靠攏。神經網絡的優點是,對於扭曲的字符識別成功率很是高。另外神經網絡在信息安全中還能夠起到不少其餘做用,好比識別惡意代碼等等
未完待續。。。