信息安全问题,在服务 morozhenka 中,可以通过交换 cookie 以任何用户的身份登录。这导致了什么,如何才能解决这个问题?

提示:什么是 cookie?您如何使用它们来验证客户?只将用户名写入 cookie 有什么危险?什么是密码学?您能想到哪些方法将密码学应用于安全地验证用户的任务?此项服务适用于哪一项?注意:假设攻击者拥有与提供给您的登录代码相同的存档。

首先cookie中储存的仅仅是标识,也就是说一个key,相应的在服务端这个key还对应着一大堆的信息,这个信息不仅仅是用户登录认证,你还可以在里面储存客户端ip,浏览器信息,甚至客户端硬件信息以及经纬度信息,还有一些意想不到的东东,这样在验证登陆状态的时候同时可以验证这些复杂的信息来辅助认证;
这个复杂的认证过程不仅限于cookie登陆验证,开发中其他验证也可以参考;
再者就是,一般app中涉及到隐私信息的时候都会有二次验证,比如我要查看我的信息,修改密码,支付等操作时需要二次验证;
希望可以可以帮到你

只将用户名写入 cookie 有什么危险?
cookie信息容易被伪造,从而导致系统安全问题。

cookie是浏览器生成和管理的一段数据,访问某个网址,浏览器会读取此网址对应的cookie内容发送给服务器,服务器获取后可以读取cookie内容进行相关的操作,如读取和此用户对应的信息什么的。具体参考下面的


密码学参考
密码学入门_wjheha的博客-CSDN博客_密码学入门 密码学入门研究生的第一年就要过完了。有幸在号称中国密码学界的“黄埔军校”学习密码,得以见识老一辈和新一辈密码学大师的风采。虽然学的不好,但感觉也有所收获,主要是自己的基础知识太缺乏了,觉得有必要写一篇建议性的文章,给那些希望从事密码学研究的师弟师妹们一个参考。 https://blog.csdn.net/wjheha/article/details/73658249

和读取用户信息的cookie不要明文存储,比用户名写入 cookie ,然后服务器端通过这个cookie作为用户身份进行数据操作,这样只要获得用户名,就可以随便更改cookie值,导致用户信息泄露和被删除。
但是如果cookie只是作为显示用,不作为用户身份,那么是没有什么风险。

通过上面就应该清楚了,用户名的cookie作为身份时,不能直接文明存储,而应该用密码学中的加密手段对cookie值进行加密,并且cookie值以一定的结构存储,比如加salt之类的变成不规律的内容,这样别人就很难伪造cookie值访问别人的数据了。

img


有帮助或启发麻烦点下【采纳该答案】,谢谢~~有其他问题可以继续交流~

img

逐一回答问题,只能大致说明,具体还需要结合实际业务进行功能实现。

1、什么是 cookie?

Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。

2、您如何使用它们来验证客户?

//读取
Response.Write(Request.Cookies["IP"].Value);//Cookies中读取客户端IP地址值

//验证
if (Request.Cookies["SavedLogin"] == null)
{
Response.Write("<script>alert('Cookie 失效!');location='Default.aspx';</script>");

}
else
{
if (txtName.Text == Request.Cookies["SavedLogin"]
["UserName"].ToString() && txtPassword.Text ==
Request.Cookies["SavedLogin"]["UserPwd"].ToString())
{
Session["UserName"] = txtName.Text.Trim();
Response.Redirect("NavigatePage.aspx");
}
else
{
Response.Write("<script>alert('登录失败!')");
}
}

3、只将用户名写入 cookie 有什么危险?

用户名通常可以安全存储为cookie,只要它们不是访问敏感区域时唯一检查的数据。

4、什么是密码学?

密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。

5、能想到哪些方法将密码学应用于安全地验证用户的任务?

此示例进行的是MD5加密


//加密 Cookie 中的数据
string data = "对Cookie中的数据加密。";
Response.Cookies["data"].Value = FormsAuthentication.HashPasswordForStoringInConfigFile(data, "md5");
Response.Write(Request.Cookies["data"].Value);

6、此项服务适用于哪一项?注意:假设攻击者拥有与提供给您的登录代码相同的存档。

可以考虑设置Cookie的有效期,绑定用户的浏览器信息,以及删除必要时删除客户端的Cookie。

Cookie是有时效的,超过时效之后就不能使用了
如果网站是唯一用户登录,那么Cookie也应该有排他性