一般网页登陆之后,账号和用户信息存储在哪?
是存储本地在cookie、sessionStorage、localStorage里面。
还是通过url传递参数查询?
求大神指导,有哪种方式更安全方便。
window.sessionStorage.name = 'rainman'; // 赋值
window.sessionStorage.setItem('name','cnblogs'); // 赋值
window.sessionStorage.getItem('name'); // 取值
window.sessionStorage.removeItem('name'); // 移除值
window.sessionStorage.clear(); // 删除所有sessionStorage
localStorage.setItem("me", JSON.stringify(person));
//获取cookie
function getCookie(name) {
var strCookie = document.cookie;
var arrCookie = strCookie.split("; ");
for (var i = 0; i < arrCookie.length; i++) {
var arr = arrCookie[i].split("=");
if (arr[0] == name) return arr[1];
}
return "";
}
url&id=??
信息通常都是存储在服务器端的,客户端的cookie存一个key,服务器端通过这个key查找对应的缓存找到之前的登录信息。
轻量的方案还有一个做法是将登录信息存储到cookie中,不过这些信息不应该包含敏感数据,比如用户密码,因为cookie是明文的。
同时为了防止有人伪造,一般会再对这些信息做一次摘要加密算法,然后也放到cookie中,服务器通过判断摘要加密串来识别信息是否是服务器写入的。
当然你的加密算法肯定需要保密,一般常用的办法是 将登录信息序列化,然后加上一个字符串(需要严格保密,别人如果知道这个就可以伪造cookie了),再做MD5或SHA。
举个例子,用户登录成功后,你可以将用户ID,昵称,头像,邮箱,电话,性别等信息放在cookie中,为了防止别人伪造cookie信息,你将上诉的信息序列化成字符串,然后加上一个secreKey,例如:'&%1^88123*!@14',然后做MD5,也放在cookie中,这样每次服务器拿到cookie后,用同样的算法再计算一次,与cookie中之前的前次计算值匹配下即可知道是否是真的服务器设置的了。
如果为了更加安全,secreKey可以根据不同的用户数据产生,或者设置过期时间,就不复述了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。