cookie验证有他自己的方便优越之处,不能完全摒弃(例如:如果用户量大,优势就是不占服务器资源,持久验证)。某日看程序时发现一比较安全的验证方法,共享之。
有程序:
$destoon_auth = get_cookie('auth'); //获取cookie auth
if($destoon_auth) {
$_dauth = explode(" ", 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'] 是用户的浏览器信息。
无论如何:md5(DT_KEY.$_SERVER['HTTP_USER_AGENT'])) 这个别人是无法伪造出来的,用它当密钥解密。
有着三个方面的保护,可以使:每个网站cookie不一样,每个用户cookie不一样。
这样获取用户名用cookie+sql验证,别人是利用不了的。
这个 随机密钥加密cookie 的思路可以借鉴到其他脚本web开发中。