使用者登入之cookie資訊安全一二事,cookie資訊安全
大家都知道使用者登陸後,使用者資訊一般會選擇儲存在cookie裡面,因為cookie是儲存用戶端,
並且cookie可以在用戶端用瀏覽器自由更改,這樣將會造成使用者cookie存在偽造的危險,從而可能使偽造cookie者登入任意使用者的賬戶。
下面就說說平常一些防止使用者登入cookie資訊安全的方法:
一、cookie資訊加密法
cookie資訊加密法即用一種加密方法,加密使用者資訊,然後在存入cookie,這樣偽造者即使得到cookie也只能在cookie有效期間內對這個cookie利用,無法另外偽造cookie資訊。
這裡附上一個加密函數:
0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { return substr($result, 26); } else { return ''; } } else { // 把動態密匙儲存在密文裡,這也是為什麼同樣的明文,生產不同密文後能解密的原因 // 因為加密後的密文可能是一些特殊字元,複製過程可能會丟失,所以用base64編碼 return $keyc.str_replace('=', '', base64_encode($result)); } } $str = 'abcdef'; $key = 'www.phpskill.com'; echo $jm = authcode($str,'ENCODE',$key,0); //加密 echo "";echo authcode($jm ,'DECODE',$key,0); //解密?>
這樣當設定使用者資訊的cookie時,就無法對其進行偽造:
$uid,"username"=>$username);$user = base64_encode(serialize($user));$user = authcode($user,'ENCODE','www.phpskill.com',0); //加密 setcookie("user",$user,time()+3600*24);?>
二、用加密令牌對cookie進行保護
$hash = md5($uid.time());//加密令牌值$hash_expire =time()+3600*24;//加密令牌值為一天有效期間$user = array("uid"=>$uid,"username"=>$username,"hash"=>$hash);$user = base64_encode(serialize($user));setcookie("user",$user,$hash_expr);然後把$hash和$hash_expire 存入member表中hash和hash_expire對應欄位中,也可以存入nosql,session使用者偽造cookie時,hash無法偽造,偽造的hash和資料庫中的不一致使用者每次登陸,這個hash_expire有效期間內不更新hash值,到期則更新
php純技術交流群: 323899029
原文轉載於:http://www.phpskill.com/html/show-1-4424-1.html
http://www.bkjia.com/PHPjc/949211.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/949211.htmlTechArticle使用者登入之cookie資訊安全一二事,cookie資訊安全 大家都知道使用者登陸後,使用者資訊一般會選擇儲存在cookie裡面,因為cookie是儲存用戶端,...