cookie驗證有他本身的方便優越之處,不能徹底摒棄(例如:若是用戶量大,優點就是不佔服務器資源,持久驗證)。某日看程序時發現一比較安全的驗證方法,共享之。web
有程序:sql
$destoon_auth = get_cookie('auth'); //獲取cookie auth
if($destoon_auth) {
$_dauth = explode("\t", decrypt($destoon_auth, md5(DT_KEY.$_SERVER['HTTP_USER_AGENT'])) ); //解密cookie
$_userid = isset($_dauth[0]) ? intval($_dauth[0]) : 0; //獲取解密後的明文cookie
$_username = isset($_dauth[1]) ? trim($_dauth[1]) : '';
$_groupid = isset($_dauth[2]) ? intval($_dauth[2]) : 3;
}瀏覽器
DT_KEY是安裝時隨機碼(每次安裝都不同,這是最主要的)。安全
decrypt和encrypt是自寫的加密函數。服務器
$_SERVER['HTTP_USER_AGENT'] 是用戶的瀏覽器信息。cookie
不管如何:md5(DT_KEY.$_SERVER['HTTP_USER_AGENT'])) 這個別人是沒法僞造出來的,用它當密鑰解密。函數
有着三個方面的保護,能夠使:每一個網站cookie不同,每一個用戶cookie不同。網站
這樣獲取用戶名用cookie+sql驗證,別人是利用不了的。加密
這個 隨機密鑰加密cookie 的思路能夠借鑑到其餘腳本web開發中。md5