在cookie中直接存放Name(或者Id)是不行的,因为cookie是完全可以“伪造”的!(演示)
所以,在cookie中要同时存储一个不能被伪造的,能证明用户合法身份的信息,最常用的就是密码。
但是,直接把密码(以明文形式)存放在cookie中是非常危险的。所以,我们需要对密码进行加密。
注意:从一开始存储密码就绝对不能使用明文,否则数据库一旦泄漏,不仅影响当前网站,也会影响到其他非常多的网站——因为用户通常都是使用相同的用户名和密码登录不同的网站。(见:CSDN数据泄露案告破)。
加密通常使用MD5单向加密算法。
MD5属于Hash算法(复习:Https),具有三个特点:
思考:明白为什么现在的网站都不能“找回密码”,只能“重置密码”了么?
ASP.NET Core中使用MD5的方法如下:
//MD5实现了IDisposable using (MD5 md5Hash = MD5.Create()) { //1. 将字符串转换成byte[] //2. 进行MD5加密运算 byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes("17bang" + input)); //StringBuilder提高性能(其实也提高了可读性) StringBuilder sBuilder = new StringBuilder(); for (int i = 0; i < data.Length; i++) { sBuilder.Append(data[i].ToString("x2")); } return sBuilder.ToString(); }
复习:
加密的具体实现留给同学们在作业中完成。
注意:如果用户电脑本身已经被入侵,服务器端无法保证用户安全。
所以,一些高度敏感操作,还是需要再次输入用户名和密码(甚至更严格的操作,比如选择你的n个好友……)
课间作业:
原需求:可以使用邮箱找回密码,点击发送邮件获取验证码,用验证码重置密码,重置密码的邮件会发送到你填写的Email中。
问题:
多快好省!前端后端,线上线下,名师精讲
更多了解 加: