网络安全-请教 cookie 登陆状态验证机制

小组事务管理 小组事务管理 主题:974 回复:1955

网络安全-请教 cookie 登陆状态验证机制

偏爱自由 发布于 2017-05-01 字数 181 浏览 1113 回复 3

cookie有种种不安全因素, 请问平台级的登陆状态验证机制是怎么样的, 怎么防止伪造、暴破、泄露等种种问题,许多大牛都表示不要讲密码保存在cookie即使是加密过的,那服务端有该如何验证?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(3

晚风撩人 2017-10-09 3 楼

你可以在cookie生成时用未加密前的cookie值和密钥通过加密算法进行加密,在获取cookie值时使用加密用过的密钥及相同算法的逆算法对密文进行解密即可,密钥和加密解密算法你可以定时更换。

偏爱自由 2017-08-22 2 楼

放一个我自己常用的方法

function encodecookie($txt){
$key=KEY_COOKIE;
for($i=0;$i<strlen($txt);$i++){
$txt[$i]=chr(ord($txt[$i])+$key);
}
return $txt=urlencode(base64_encode(urlencode($txt)));
}
//cookie解密过程
function decodecookie($txt){
$key=KEY_COOKIE;
$txt=urldecode(base64_decode($txt));
for($i=0;$i<strlen($txt);$i++){
$txt[$i]=chr(ord($txt[$i])-$key);
}

夜无邪 2017-06-27 1 楼

COOKIE里值使用类似下面的加解密算法
1、可以把用户的基本验证信息加密后再放入COOKIE,如基本信息有
$user_cookie = array(
'user_id' = 1,
'user_name' = 'abc',
'login_ip' = '127.0.0.1',
'login_time' = '2012-06-06 00:00:00',
);
$decStr = json_encode($user_cookie);
$cookie_value = encrypt($decStr, $strKey);
setcookie($cookie_value);
2、验证的时候,首先解密这个COOKIE,并根据login_time设定一个有效期,过期就验证失败,另外可以判断用户当前的IP是事有COOKIE里解出来的一样,如果不一样也验证失败
$cookie_json_string = decrypt($cookie_value, $strKey);
$user_cookie = json_decode($cookie_json_string,true);

3、$strKey作为密钥,可以不定期做一些变更

function encrypt($decStr, $strKey)
{
return base64_encode(mcrypt_encrypt(MCRYPT_DES, $strKey, $decStr, MCRYPT_MODE_CBC));
}

function decrypt($encStr, $strKey)
{
return mcrypt_decrypt(MCRYPT_DES, $strKey, base64_decode($encStr), MCRYPT_MODE_CBC);
}