2009年2月7日 星期六

一些php網頁驗證小技巧

一般而言坊間教學書上對於登入驗證這塊都沒有說明的很詳細, 但其實還有一些技巧需注意, 雖然這些技巧並不能讓你網站100%安全, 但是至少能夠防範"輕易"的被誤用或連結.

例如說處理表單的php來源照理來說應該要是表單的html等, 如果不判斷來源, 就能夠使用一些機器人隨意新增或修改資料, 下段程式判斷時否有來源網頁, 有的話是否是你設定的網頁.

<?php
$referrer = $_SERVER['HTTP_REFERER'];
if($referrer == '' || strpos($referrer, 'your_php.php') == false){        // 判斷來源網頁
    die('來源網頁錯誤');
}
?>

至於登入很多人可能會忘記要驗證當初登入的瀏覽器與IP位址, 你可以在登入時註冊一個session為如下:

<?php
$_SESSION['userAgent'] = $_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'];
?>

如果要使用cookie記憶長時效, 為了不讓cookie被破解我們會做一些混淆動作, 但要還原卻又很困難, 所以我們把混淆後的cookie記錄在資料庫中, 並設定時效, 每次瀏覽需要驗證的頁面時都去比對, 直到cookie過期失效.

<?php
$cookie = md5($date.$mail.$identify.rand(0, 1000000));
$cookieexpiry = (time() + 21600);
setcookie('memberVerify', $cookie, $cookieexpiry); //時效驗證
?>

如果有看過我之前破解一些網站的文章就知道上述方法還是能夠被手動取代, 但至少不會輕易讓門外漢利用!

沒有留言:

張貼留言