Jquery Real Person

一個加增表單驗證碼的程式

說真的…這還滿好用的

完全省去了大爺寫驗證碼這方面的時間

而且「驗證碼的產生也滿嚴謹的」…

應該不容昜被破解

 

可以看看官方網站的範例介紹 http://keith-wood.name/realPersonBasics.html

 

這個作者真的很厲害

沒仔細看還不知道他寫了這麼多的jquery外掛程式 http://keith-wood.name/index.html
只能說真的是個高手…希望有朝一日大爺也能成為程式界的「大師」…

是大師哦…不是高手哦…哈哈…太囂張了 ^^"

這就是我的忍道…我都是有話直說的…(歹勢…大爺最近都在看火影忍者…^^")

 

至於操作的方式可以參考這位南丁格爾大大的文章…寫的挺好的

http://abgne.tw/jquery/jquery-plugins/real-person-form-submission-for-jquery-1-0-1.html

好了…就這樣吧…

 

哈…當然不會就這樣啦…如果就這樣…大爺怎麼出來混哩 ^^"

其實是大爺在用這套外掛的時候…有了一點點的小問題…想提出來大家討論討論

 

在使用這套外掛的時候非常的簡單

只要在表單內新增像是這樣的欄位

 

<fieldset>
<legend>請輸入驗證碼:</legend>
<input type="text" id="validatecode" name="validatecode">
</fieldset>

 

之後在寫javascript程式的地方新增這個外掛的物件

<script type="text/javascript">
$(function(){    
    $('#validatecode').realperson({
	length: 10,//這是驗證碼的長度
    });
});
</script>

然後它就會自動的產生驗證碼了
非常的方便…但問題來了…
那我們要怎麼驗證這個驗證碼對不對哩
是要在送出前驗證…還是送出後驗證
於是作者就提供了伺服器這邊的程式碼供參考

我們先看一下伺服器這邊的程式碼
 依照官方的說法…伺服器這邊的驗證寫法是長這樣的
function rpHash($value) { 
    $hash = 5381
    $value = strtoupper($value); 
    for($i = 0; $i < strlen($value); $i++) { 
        $hash = (($hash << 5) + $hash) + ord(substr($value, $i)); 
    } 
    return $hash; 

 
if (rpHash($_POST['realPerson']) == $_POST['realPersonHash']) { 

可以參考這裡 http://keith-wood.name/realPerson.html

 

function rpHash($value)

(上面的這個 rpHash($value) 方法主要是用來產生雜湊值(hash)用的…至於演算法的部份…有興趣的鄉親再研究吧…) 

 

好啦…一般來說驗證碼主要是用來「防止灌水程式」的
所以原理是…在每次更新頁面時都產生一個不同的值…來讓使用者輸入
而這個程式的驗證碼
是由「本地端」產生的
所以是要在「本地端做驗證」…還是要在「伺服器端做驗證」…其實是沒什麼太大的差別了@@

這怎麼說呢我們來看一下在「伺服器」這邊的驗證碼
就是下面的這一行
if (rpHash($_POST['realPerson']) == $_POST['realPersonHash']) { 
看到這裡各位客倌有沒有發現了
驗證的方式是「比對」「$_POST['realPerson']$_POST['realPersonHash']這兩個欄位值
而這兩個值都是由「客戶端傳來的
也就是說我只要「比對表單的這兩個欄位值」就能通過驗證了
所以這種驗證方式其實是有點問題的
只能防君子…不能防小人…要寫個灌水程式…不是很難 = ="

如果依照大爺的淺見來看
比較安全的驗證方式
是類似用網路金錀的這種方法會比較安全
驗證碼要由伺服器這邊來產生-->然後傳給本地端-->本地端輸入驗證碼之後-->再回給伺服器來驗證
而伺服器這邊產生的驗證碼要由「圖檔」的方式產生給本地端
這樣一來安全性會比較高一點
也比較不容昜被破解

所以說這支外掛「驗証碼的產生方式是不錯的
但都已經公開了…就真的是有點小危險 @@

 



arrow
arrow
    全站熱搜

    大爺 發表在 痞客邦 留言(0) 人氣()