關(guān)于php驗(yàn)證碼的破解。
網(wǎng)站防爆最好是加驗(yàn)證碼了。
市場(chǎng)上的驗(yàn)證碼一般有幾花樣,
英文+數(shù)字、中文與JS的,
還有很少見(jiàn)的中國(guó)移動(dòng)識(shí)圖驗(yàn)證碼。
這種看似很威武,實(shí)際上感覺(jué)也不太好,答案就固定有8個(gè)了。
做數(shù)字是否存在判斷后,答案就能鎖定4個(gè)了??棵傻脑挘蓪?duì)的機(jī)率還是挺大的。
最后是加些干擾點(diǎn)、干擾線。再扭曲字體等。
php通常是用GD庫(kù)生成圖片+SESSION來(lái)實(shí)現(xiàn)認(rèn)證,
當(dāng)突破驗(yàn)證碼這關(guān)之后,可以模擬請(qǐng)求獲sessionID,
用獲得sessionID取得驗(yàn)證碼分析之后再模擬注冊(cè)登錄驗(yàn)證。
驗(yàn)證碼被破后基本是暢通無(wú)阻了。然后就爆力效驗(yàn)賬號(hào)密碼,濫發(fā)信息之類云云了……
在明白過(guò)程后就好防備了,所以說(shuō)涉及到幾個(gè)問(wèn)題。
一、要加強(qiáng)驗(yàn)證碼難度,一些位置固定字符形態(tài)不變的是很容易識(shí)別的了。
二、要SESSION做適當(dāng)配置。SESSION效驗(yàn)后及時(shí)清掉,禁止URL傳值設(shè)置等...
三、適當(dāng)做些時(shí)間與次數(shù)限制。
下面是百度的驗(yàn)證碼BZ6E,應(yīng)該有來(lái)路判斷的提交幾次就掛了,偽一下才行。
有些難度,每個(gè)字符都連接一起加干擾線加少許扭曲,跟淘寶的差不多,不過(guò)淘寶沒(méi)干擾線。
大家討論下看看怎么破,應(yīng)該還是有人破的了。貼吧上還是經(jīng)常有人爆吧的?!?br>
好了,先扯這么多。
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> $image_name = 'baidu.jpg'; $image = "http://tieba.baidu.com/cgi-bin/genimg?0013286908280168B65F46CEDCD48CF9D46DF47A64587DA42FC48BF1CF8D47BD0D0BC2EE39911C9918D5CF46E79CF94FFA71BC0DC14DAE59197F42F24B4455C205062670A2977101F1A661F7F4716A8BC2C21D586F886CA300E0D42874D6365A1216622D9740163479D1DD416DAE5D70C09EA834F6B9EC307A29CDAF8D0C78FE159402800B113F6039195E5D683695532E4E2FFD8563D732AD19EDFB147B7569B617BDFBE487CE77AE49E75D83BA56B7038971E2081F647A&t=0.7108543934300542"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $image); curl_setopt($curl, CURLOPT_REFERER, 'http://tieba.baidu.com/f?kw=baidu'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl); file_put_contents($image_name, $result); $size = getimagesize($image_name); $im = imagecreatefromjpeg($image_name); imagejpeg($im, 'baidu.jpg',100); $width = $size[0]; $height = $size[1]; for($x = 1; $x < $width; $x ++) { for($y = 1; $y < $height; $y ++) { $color = imagecolorat($im, $x, $y); $_col[$x][] = $color; if($color < '16777215') $all_color[$color] = $color; } } $n = array_sum($all_color) / count($all_color); foreach ($_col as $key=>$val) { foreach ($val as $k=>$v) $col[$key] .= $v < $n ? '1':' '; } // 去多余行列 foreach ($_col as $key=>$val) if(array_sum($val) < 1) unset($col[$key]); foreach ($col as $key=>$val) { $val = trim($val); if(empty($val)) unset($col[$key]); } echo '<pre class="brush:php;toolbar:false">'; print_r($col);
PHP怎么學(xué)習(xí)?PHP怎么入門?PHP在哪學(xué)?PHP怎么學(xué)才快?不用擔(dān)心,這里為大家提供了PHP速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)