偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

安全 應(yīng)用安全
驗(yàn)證碼作為一種輔助安全手段在Web安全中有著特殊的地位,驗(yàn)證碼安全和web應(yīng)用中的眾多漏洞相比似乎微不足道,但是千里之堤毀于蟻穴,有些時(shí)候如果能繞過驗(yàn)證碼,則可以把手動(dòng)變?yōu)樽詣?dòng),對(duì)于Web安全檢測(cè)有很大的幫助。

一、簡介

驗(yàn)證碼作為一種輔助安全手段在Web安全中有著特殊的地位,驗(yàn)證碼安全和web應(yīng)用中的眾多漏洞相比似乎微不足道,但是千里之堤毀于蟻穴,有些時(shí)候如果能繞過驗(yàn)證碼,則可以把手動(dòng)變?yōu)樽詣?dòng),對(duì)于Web安全檢測(cè)有很大的幫助。

全自動(dòng)區(qū)分計(jì)算機(jī)和人類的圖靈測(cè)試(英語:Completely Automated Public Turing test to tell Computers and Humans Apart,簡稱CAPTCHA),俗稱驗(yàn)證碼,是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序。在CAPTCHA測(cè)試中,作為服務(wù)器的計(jì)算機(jī)會(huì)自動(dòng)生成一個(gè)問題由用戶來解答。這個(gè)問題可以由計(jì)算機(jī)生成并評(píng)判,但是必須只有人類才能解答。由于計(jì)算機(jī)無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認(rèn)為是人類。(from wikipedia)

大部分驗(yàn)證碼的設(shè)計(jì)者都不知道為什么要用到驗(yàn)證碼,或者對(duì)于如何檢驗(yàn)驗(yàn)證碼的強(qiáng)度沒有任何概念。大多數(shù)驗(yàn)證碼在實(shí)現(xiàn)的時(shí)候只是把文字印到背景稍微復(fù)雜點(diǎn)的圖片上就完事了,程序員沒有從根本上了解驗(yàn)證碼的設(shè)計(jì)理念。

驗(yàn)證碼的形式多種多樣,先介紹最簡單的純文本驗(yàn)證碼。

純文本驗(yàn)證碼

純文本,輸出具有固定格式,數(shù)量有限,例如:

•1+1=?

•本論壇的域名是?

•今天是星期幾?

•復(fù)雜點(diǎn)的數(shù)學(xué)運(yùn)算

這種驗(yàn)證碼并不符合驗(yàn)證碼的定義,因?yàn)橹挥凶詣?dòng)生成的問題才能用做驗(yàn)證碼,這種文字驗(yàn)證碼都是從題庫里選擇出來的,數(shù)量有限。破解方式也很簡單,多刷新幾次,建立題庫和對(duì)應(yīng)的答案,用正則從網(wǎng)頁里抓取問題,尋找匹配的答案后破解。也有些用隨機(jī)生成的數(shù)學(xué)公式,比如 隨機(jī)數(shù) [+-*/]隨機(jī)運(yùn)算符 隨機(jī)數(shù)=?,小學(xué)生水平的程序員也可以搞定……

這種驗(yàn)證碼也不是一無是處,對(duì)于很多見到表單就來一發(fā)的spam bot來說,實(shí)在沒必要單獨(dú)為了一個(gè)網(wǎng)站下那么大功夫。對(duì)于鐵了心要在你的網(wǎng)站大量灌水的人,這種驗(yàn)證碼和沒有一樣。

下面講的是驗(yàn)證碼中的重點(diǎn),圖形驗(yàn)證碼。

圖形驗(yàn)證碼

先來說一下基礎(chǔ):

識(shí)別圖形驗(yàn)證碼可以說是計(jì)算機(jī)科學(xué)里的一項(xiàng)重要課題,涉及到計(jì)算機(jī)圖形學(xué),機(jī)器學(xué)習(xí),機(jī)器視覺,人工智能等等高深領(lǐng)域……

簡單地說,計(jì)算機(jī)圖形學(xué)的主要研究內(nèi)容就是研究如何在計(jì)算機(jī)中表示圖形、以及利用計(jì)算機(jī)進(jìn)行圖形的計(jì)算、處理和顯示的相關(guān)原理與算法。圖形通常由點(diǎn)、線、面、體等幾何元素和灰度、色彩、線型、線寬等非幾何屬性組成。計(jì)算機(jī)涉及到的幾何圖形處理一般有 2維到n維圖形處理,邊界區(qū)分,面積計(jì)算,體積計(jì)算,扭曲變形校正。對(duì)于顏色則有色彩空間的計(jì)算與轉(zhuǎn)換,圖形上色,陰影,色差處理等等。

在破解驗(yàn)證碼中需要用到的知識(shí)一般是 像素,線,面等基本2維圖形元素的處理和色差分析。常見工具為:

•支持向量機(jī)(SVM)

•OpenCV

•圖像處理軟件(Photoshop,Gimp…)

•Python Image Library

支持向量機(jī)SVM是一個(gè)機(jī)器學(xué)習(xí)領(lǐng)域里常用到的分類器,可以對(duì)圖形進(jìn)行邊界區(qū)分,不過需要的背景知識(shí)太高深。

OpenCV是一個(gè)很常用的計(jì)算機(jī)圖像處理和機(jī)器視覺庫,一般用于人臉識(shí)別,跟蹤移動(dòng)物體等等,對(duì)這方面有興趣的可以研究一下

PS,GIMP就不說了,說多了都是淚啊……

Python Image Library是pyhon里面帶的一個(gè)圖形處理庫,功能比較強(qiáng)大,是我們的首選。

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

 

SVM圖像邊界區(qū)分

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

 

SVM原理,把數(shù)據(jù)映射到高維空間,然后尋找能夠分割的超平面

識(shí)別驗(yàn)證碼需要充分利用圖片中的信息,才能把驗(yàn)證碼的文字和背景部分分離,一張典型的jpeg圖片,每個(gè)像素都可以放在一個(gè)5維的空間里,這5個(gè)維度分別是,X,Y,R,G,B,也就是像素的坐標(biāo)和顏色,在計(jì)算機(jī)圖形學(xué)中,有很多種色彩空間,最常用的比如RGB,印刷用的CYMK,還有比較少見的HSL或者HSV,每種色彩空間的維度都不一樣,但是可以通過公式互相轉(zhuǎn)換。

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

 

RGB色彩空間構(gòu)成的立方體,每個(gè)維度代表一種顏色

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

 

HSL(色相飽和度)色彩空間構(gòu)成的錐體,可以參考:

https://zh.wikipedia.org/wiki/HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4

了解到色彩空間的原理,就可以用在該空間適用的公式來進(jìn)行像素的色差判斷,比如RGB空間里判斷兩個(gè)點(diǎn)的色差可以用3維空間中兩坐標(biāo)求距離的公式:

distance=sqrt[(r1-r2)^2+(g1-g2)^2+(b1-b2)^2]

更加直觀的圖片,大家感受一下:

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

 

隨便把一張圖片的每個(gè)像素都映射到RGB色彩空間里就能獲得一個(gè)這樣的立方體。

通過對(duì)像素顏色進(jìn)行統(tǒng)計(jì)和區(qū)分,可以獲得圖片的顏色分布,在驗(yàn)證碼中,一般來說使用近似顏色最多的像素都是背景,最少的一般為干擾點(diǎn),干擾線和需要識(shí)別文字本身。

對(duì)于在RGB空間中不好區(qū)分顏色,可以把色彩空間轉(zhuǎn)換為HSV或HSL:

 

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

#p# 

二、驗(yàn)證碼識(shí)別的原理和過程

第一步: 二值化

所謂二值化就是把不需要的信息通通去除,比如背景,干擾線,干擾像素等等,只剩下需要識(shí)別的文字,讓圖片變成2進(jìn)制點(diǎn)陣。

驗(yàn)證碼識(shí)別的原理和過程

 

第二步: 文字分割

為了能識(shí)別出字符,需要對(duì)要識(shí)別的文字圖圖片進(jìn)行分割,把每個(gè)字符作為單獨(dú)的一個(gè)圖片看待。

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

 

第三步:標(biāo)準(zhǔn)化

對(duì)于部分特殊的驗(yàn)證碼,需要對(duì)分割后的圖片進(jìn)行標(biāo)準(zhǔn)化處理,也就是說盡量把每個(gè)相同的字符都變成一樣的格式,減少隨機(jī)的程度

最簡單的比如旋轉(zhuǎn)還原,復(fù)雜點(diǎn)的比如扭曲還原等等

第四步:識(shí)別

這一步可以用很多種方法,最簡單的就是模板對(duì)比,對(duì)每個(gè)出現(xiàn)過的字符進(jìn)行處理后把點(diǎn)陣變成字符串,標(biāo)明是什么字符后,通過字符串對(duì)比來判斷相似度。

在文章的后半部分會(huì)詳細(xì)解釋每步的各種算法

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

 

二值化算法

對(duì)于大部分彩色驗(yàn)證碼,通過判斷色差和像素分布都能準(zhǔn)確的把文字和背景分離出來,通過PS等工具把圖片打開,用RGB探針對(duì)文字和背景圖的顏色分別測(cè)試,在測(cè)試多張圖片后,很容易可以發(fā)現(xiàn)文字和背景圖的RGB差距總是大于一個(gè)固定的閾值,即使每次圖片的文字和背景顏色都會(huì)變化,比如:

新浪和discuz的驗(yàn)證碼

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

通過對(duì)文字部分和干擾部分取樣可以發(fā)現(xiàn),文字部分的R、G值一般在100左右,B值接近255,但是背景干擾的R、G值則大大高于文字部分,接近200,比較接近文字輪廓部分的像素的RG值也在150以上。通過程序遍歷一遍像素就可以完全去掉背景。

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

Discuz的驗(yàn)證碼同理

對(duì)于一些和文字顏色相同但是較為分散和單一的干擾像素點(diǎn),我們可以用判斷相鄰像素的方法,對(duì)于每個(gè)點(diǎn)判斷該點(diǎn)和相鄰8個(gè)點(diǎn)的色差,若色差大于某個(gè)值,則+1,如果周圍有超過6個(gè)點(diǎn)的色差都比較大,說明這個(gè)點(diǎn)是噪點(diǎn)。對(duì)于圖像邊界的一圈像素,周圍沒有8個(gè)像素,則統(tǒng)統(tǒng)清除,反正文字都在圖片的中間位置。

如下圖:假如當(dāng)前像素的坐標(biāo)是x,y 圖形坐標(biāo)系的原點(diǎn)是圖像的左上角

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

 

干擾線對(duì)于識(shí)別驗(yàn)證碼增加了一些難度,不過干擾線只有很小的幾率會(huì)以大角度曲線的方式出現(xiàn),大部分時(shí)間還是小角度直線,去除算法可以參考http://wenku.baidu.com/view/63bac64f2b160b4e767fcfed.html

對(duì)于1個(gè)像素粗細(xì)的干擾線,在字符為2個(gè)像素以上的時(shí)候,可以用去噪點(diǎn)算法作為濾鏡,多執(zhí)行幾次,就可以完美的把細(xì)干擾線去掉。

對(duì)于像素?cái)?shù)比干擾點(diǎn)稍大的干擾色塊,可以采用的算法有:

油漆桶算法(又叫種子填充算法,F(xiàn)loodfill)

種子填充算法可以方便的計(jì)算出任意色塊的面積,對(duì)于沒有粘連字符或者粘連但是字符每個(gè)顏色不一樣的驗(yàn)證碼來說,去除干擾色塊的效果很好,你只需要大概計(jì)算一下最小的和最大的字符平均占多少像素,然后把這段區(qū)間之外像素?cái)?shù)的色塊排除掉即可。

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別 實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

 上下左右4個(gè)方向填充還有8個(gè)方向填充的不同

判斷顏色分布:

對(duì)于大多數(shù)彩色驗(yàn)證碼來說,文字基本在圖片中心的位置,每個(gè)字符本身的顏色是一樣的,也就是說對(duì)于文字來說,同一種顏色基本都集中在一個(gè)固定的區(qū)域范圍內(nèi),通過統(tǒng)計(jì)圖片中的像素,按近似顏色分組,同時(shí)分析每個(gè)顏色組在圖片中的分布范圍,假如說有一種顏色大部分像素都在圖片邊緣,那么這個(gè)顏色肯定不屬于要識(shí)別的字符,可以去掉。

對(duì)于干擾線,并沒有一種十分有效的方式能完全去除并且不影響到文字,不過如果能夠成功分割字符的話,少量干擾線對(duì)于識(shí)別率影響不大。

字符分割算法

破解驗(yàn)證碼的重點(diǎn)和難點(diǎn)就在于能否成功分割字符,這一點(diǎn)也是機(jī)器視覺里的一道難題,對(duì)物件的識(shí)別能力。對(duì)于顏色相同又完全粘連的字符,比如google的驗(yàn)證碼,目前是沒法做到5%以上的識(shí)別率的。不過google的驗(yàn)證碼基本上人類也只有30%的識(shí)別率

對(duì)于字符之間完全沒有粘連的驗(yàn)證碼,比如這個(gè)->_->實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別 

分割起來是非常的容易,用最基本的掃描線法就可以分割,比如從最左側(cè)開始從上到下(y=0—||||y=n)掃描,如果沒有遇到任何文字的像素,就則往右一個(gè)像素然后再掃描,如果遇到有文字像素存在,就記錄當(dāng)前橫坐標(biāo),繼續(xù)向右掃,突然沒有文字像素的時(shí)候,就說明到了兩個(gè)字符直接的空白部分,重復(fù)這個(gè)步驟再橫向掃描就能找到每個(gè)字符最邊緣4個(gè)像素的位置,然后可以用PIL內(nèi)建的crop功能把單獨(dú)的字符摳出來。

對(duì)于有少許粘連但是只是在字符邊角的地方重疊幾個(gè)像素的驗(yàn)證碼,可以用垂直像素直方圖的統(tǒng)計(jì)方法分割。如下圖:

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

 

圖上半部分是垂直像素直方圖的一種直觀展示,假如圖片寬度為100像素,則把圖片切割為100個(gè)1像素的豎線,下面的紅色部分為當(dāng)前x坐標(biāo)上所有黑色像素的總和。這么一來可以很容易的通過直方圖的波峰波谷把4個(gè)字母分割開。圖片的下半部分是掃描線分隔法,因?yàn)楦蓴_線和字符旋轉(zhuǎn)的存在,只有M和5直接才出現(xiàn)了連續(xù)的空白部分。

除了垂直像素直方圖,還可以從不同的角度進(jìn)行斜線方向的像素?cái)?shù)投影,這種方式對(duì)于每次全體字符都隨機(jī)向一個(gè)角度旋轉(zhuǎn)的驗(yàn)證碼效果很好。對(duì)于每次字符大小和數(shù)量都一樣的驗(yàn)證碼還可以用平均分割法,也就是直接先把中間的文字部分整體切出來,然后按寬度平均分成幾份,這種方式對(duì)字符粘連比較多用其他方式不好分割的驗(yàn)證碼很有用,之前的megaupload的3位字母驗(yàn)證碼就是通過這種方式成功分割的。

另外對(duì)于彩色的驗(yàn)證碼,還可以用顏色分割,比如12306的:

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

12306的驗(yàn)證碼,每個(gè)字符顏色都不一樣,真是省事啊。

作為驗(yàn)證碼識(shí)別里的難點(diǎn),分割字符還有很多種算法,包括筆畫分析曲線角度分析等等,不過即便如此,對(duì)粘連的比較厲害的字符還是很難成功的。

標(biāo)準(zhǔn)化

標(biāo)準(zhǔn)化的意思是指對(duì)于同一個(gè)字符,盡可能讓每次識(shí)別前的樣本都一致,以提高識(shí)別率。而驗(yàn)證碼設(shè)計(jì)者則會(huì)用隨機(jī)旋轉(zhuǎn),隨機(jī)扭曲還有隨機(jī)字體大小的方式防止字符被簡單方法識(shí)別。

還原隨機(jī)旋轉(zhuǎn)的字符一般采用的是旋轉(zhuǎn)卡殼算法:

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

 此算法非常簡單,對(duì)一張圖片左右各旋轉(zhuǎn)30度的范圍,每次1度,旋轉(zhuǎn)后用掃描線法判斷字符的寬度,對(duì)于標(biāo)準(zhǔn)的長方形字體,在完全垂直的時(shí)候肯定是寬度最窄的。嗯?納尼?上面的圖是中間的最窄?好像的確是這樣,不過只要每次旋轉(zhuǎn)后的結(jié)果都一樣,對(duì)于識(shí)別率不會(huì)有影響。

扭曲還原的算法比較蛋疼,效果也不怎么樣(其實(shí)我不會(huì)),不過如果識(shí)別算法好的話,對(duì)扭曲的字符只要人能認(rèn)出來,識(shí)別率也可以達(dá)到接近人類的水準(zhǔn)。

還有一些常用到的算法,對(duì)于提高識(shí)別率和減少樣本數(shù)量有一定幫助:

骨架細(xì)化:腐蝕算法

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

腐蝕算法的原理有點(diǎn)像剝洋蔥,從最外層沿著最外面的一層像素一圈一圈的去掉,直到里面只剩下一層像素為止。腐蝕算法里面需要用到另一個(gè)算法,叫做凸包算法,用來找一堆像素點(diǎn)里面最外圍的一層。

最后就是把字符變成統(tǒng)一大小,一般而言是把全部字符都縮到和驗(yàn)證碼里出現(xiàn)過的最小的字符一個(gè)大小。

詳情請(qǐng)自行g(shù)oogle……

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

分割算法差不多就到這里了,都是一些比較基礎(chǔ)的內(nèi)容。下面是最終的識(shí)別。#p#

三、識(shí)別

其實(shí)到了這一步,單獨(dú)的字符已經(jīng)分離出來了,可以訓(xùn)練tesseract ocr來識(shí)別了,樣本數(shù)量多的話,識(shí)別率也是很高的。不過在這里還是要講一下,如何自己來實(shí)現(xiàn)識(shí)別過程。

第一步,樣本現(xiàn)在應(yīng)該已經(jīng)是一個(gè)矩陣的形式了,有像素的地方是1,背景是0,先肉眼識(shí)別一下,然后把這個(gè)矩陣轉(zhuǎn)換為字符串,建立一個(gè)鍵值對(duì),標(biāo)明這串字符串是什么字符。之后就只需要多搜集幾個(gè)同樣字符的不同字符串變形,這就是制作模板的過程,。

搜集了足夠多的模板后,就可以開始識(shí)別了,最簡單的方法:漢明距離,但是如果字符有少許扭曲的話,識(shí)別率會(huì)低的離譜。對(duì)比近似字符串用的最多一般是 編輯距離算法(Levenshtein Distance),具體請(qǐng)自己google。

兩種算法的差別在于,對(duì)同樣兩個(gè)字符串對(duì)比10010101和10101010,漢明距離是6,但是編輯距離是2。

最后一種最NB的識(shí)別算法,就是神經(jīng)網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)是一種模擬動(dòng)物神經(jīng)元工作模式的算法,神經(jīng)網(wǎng)絡(luò)有多種不同的結(jié)構(gòu),但是基本架構(gòu)分為輸入層,隱含層和輸出層,輸入和輸出均為二進(jìn)制。

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

 

對(duì)于驗(yàn)證碼識(shí)別來說,輸入和輸出節(jié)點(diǎn)不宜過多,因?yàn)槎嗔撕苈?hellip;…所以如果樣本矩陣為20×20 400個(gè)像素的話,需要對(duì)應(yīng)的也要有400個(gè)輸入節(jié)點(diǎn),因此我們需要對(duì)整個(gè)矩陣提取特征值,比如先橫向每兩個(gè)數(shù)字XOR一下,然后再豎向每兩個(gè)數(shù)字XOR。

Python有很多封裝好的神經(jīng)網(wǎng)絡(luò)庫,你所需要的只是把特征值輸入神經(jīng)網(wǎng)絡(luò),再告訴他你給他的是什么(字符),這樣多喂幾次之后,也就是訓(xùn)練的過程,隨著訓(xùn)練的進(jìn)行,神經(jīng)網(wǎng)絡(luò)的內(nèi)部結(jié)構(gòu)會(huì)改變,逐漸向正確的答案靠攏。神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)是,對(duì)于扭曲的字符識(shí)別成功率非常高。另外神經(jīng)網(wǎng)絡(luò)在信息安全中還可以起到很多其他作用,比如識(shí)別惡意代碼等等。

動(dòng)畫驗(yàn)證碼

有些不甘寂寞的程序員又玩出了些新花樣,比如各種GIF甚至flv格式的動(dòng)畫驗(yàn)證碼,下面我來分析一下騰訊安全中心的GIF驗(yàn)證碼。實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

晃來晃去的看似很難,放慢100倍一幀一幀再看看?

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別  

基本上每幀都有一個(gè)字符和其他的分開,用最簡單的掃描法就能分割出來。

剩下的就很輕松了,旋轉(zhuǎn)還原之后,先填充內(nèi)部空白,縮小細(xì)化之后做成模板對(duì)比,識(shí)別率怎么也得有90%了。

原本一張圖就能搞定的事情,偏偏給了我們8張圖,而且每張圖還有一點(diǎn)區(qū)別,平白無故增大了很多信息量。

另外就是一些所謂的高用戶體驗(yàn)的驗(yàn)證碼,比如freebuf的:

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

拖動(dòng)解鎖按鈕會(huì)觸發(fā)執(zhí)行一段js,生成一串隨機(jī)字符串,ajax給后端程序判斷。

破解方式就當(dāng)留給大家的思考題了,假如我想刷評(píng)論的話,怎么辦。

還有就是聲音驗(yàn)證碼的識(shí)別,現(xiàn)在很多驗(yàn)證碼為了提高用戶體驗(yàn)和照顧視覺障礙的用戶,都有聲音驗(yàn)證碼,一般來說是機(jī)器生成一段讀數(shù)字的語音。但是在這方面上很多程序員都偷懶了,預(yù)先找了10個(gè)數(shù)字的聲音錄音,然后生成的時(shí)候把他們隨機(jī)拼到一起,結(jié)果就是這樣:

實(shí)例解說常見驗(yàn)證碼的弱點(diǎn)與驗(yàn)證碼識(shí)別

前3秒為語音提示,后面的是數(shù)字,有沒有發(fā)現(xiàn)什么?

聲音也是可以做成模板的哦

最后就是應(yīng)該怎么樣去設(shè)計(jì)驗(yàn)證碼

•整體效果

•字符數(shù)量一定范圍內(nèi)隨機(jī)

•字體大小一定范圍內(nèi)隨機(jī)

•波浪扭曲(角度方向一定范圍內(nèi)隨機(jī))

•防識(shí)別

•不要過度依賴防識(shí)別技術(shù)

•不要使用過多字符集-用戶體驗(yàn)差

•防分割

•重疊粘連比干擾線效果好

•備用計(jì)劃

•同樣強(qiáng)度完全不同的一套驗(yàn)證碼

責(zé)任編輯:藍(lán)雨淚 來源: Seay博客
相關(guān)推薦

2019-06-18 07:12:25

驗(yàn)證碼漏洞加密

2011-11-02 12:43:33

2011-11-02 16:46:41

2021-01-19 10:29:34

短信驗(yàn)證碼密碼

2022-02-11 07:10:15

驗(yàn)證碼

2020-12-29 05:33:03

Serverless驗(yàn)證碼架構(gòu)

2020-11-16 07:28:53

驗(yàn)證碼

2015-03-17 09:28:04

2009-02-09 14:17:36

2009-08-11 14:05:28

JSP驗(yàn)證碼

2015-09-21 15:31:05

php實(shí)現(xiàn)驗(yàn)證碼

2017-12-21 07:38:19

2015-03-23 17:58:04

驗(yàn)證碼倒計(jì)時(shí)并行

2023-10-27 08:53:13

Python驗(yàn)證碼圖片識(shí)別

2024-01-29 08:32:10

Python驗(yàn)證碼識(shí)別

2021-06-16 06:58:09

TensorFlow識(shí)別驗(yàn)證碼

2021-07-22 10:25:07

JS驗(yàn)證碼前端

2016-11-08 19:19:06

2022-01-20 10:54:23

移動(dòng)手機(jī)短信驗(yàn)證碼隱患
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)