以前我們剛寫PHP的時候,做後台,需要管理員身份認證。一般用COOKIE這麼做的,特別是剛接觸PHP的PHP愛好者:
admin/login.php
if(用戶名&&密碼正確) {
setcookie('admin',1,time()+36400);
echo '登錄成功';
}
if($_COOKIE[admin] == 1) {
echo '有權限';
}
但是這樣會造成很大的安全隱患,很多浏覽器可以直接修改COOKIE,或者直接在系統裡修改。
只要偽造cookie,那麼管理權限就拿到了
為了安全,這麼做:
if(用戶名&&密碼正確) {
setcookie('userid',用戶在系統中的ID,time()+36400);
setcookie('userpass',用戶在系統中的32位md5密碼,time()+36400);
echo '登錄成功';
}
判斷權限的時候這麼做:
if($_COOKIE[userid]) {
$query = mysql_query(select * user table where userid = '$_COOKIE[userid]' and userpass = '$_COOKIE[userpass]');
$row = mysql_fetch_array($query);
if($row[rank] <> 1) {
echo '沒有權限';
}
}
這樣偽造cookie就沒有任何作用了