在asp.net中,我可以像往常一样使用表单身份验证登录,复制我们的auth cookie值,注销,使用Chrome的“编辑此Cookie”插件将cookie人工添加到客户端,刷新(匿名) )登陆页面和嘿presto我再次登录。这似乎是一个漏洞 - 是否有任何方法使用标准表单auth修复它或者我必须做一些事情,比如使用自定义Authorize属性覆盖asp.net mvc中的现有属性?
答案 0 :(得分:3)
我不认为这本身就是一个错误。在表单身份验证
期间发生以下情况现在,至于为什么你看到你所看到的......你在注销前复制cookie。因此,您复制的cookie永远不会注册注销(移动的到期时间)。重新连接时,您仍然拥有有效的身份验证cookie。现在,如果您的表单身份验证超时设置为...,请说20分钟...如果您复制cookie并等待21分钟,那么此方法将失败,它已经过期。
答案 1 :(得分:1)
Cookie总是很有魅力,我们对此无能为力。我们能做的是阻止有人偷走cookie。
关于ASP.NET MVC,它可以很好地避免窃取cookie。默认情况下,它作为安全的一部分所做的一些主要事情是:
对呈现给视图的字符串进行编码(如果您使用Razor不了解其他字符串)以防止XSS攻击。
请求验证(停止有潜在危险的数据到达 应用程序)。
防止对JSON数据进行GET访问。
使用防伪助手预防CSRF
关于cookie,Microsoft提供了HttpOnly
功能,这有助于隐藏javascript中的cookie。您正在谈论的表单身份验证是一个HttpOnly
Cookie,意味着某人无法通过JavaScript窃取它,而且更安全。
答案 2 :(得分:0)
您可以使用任何 Cookie / s来执行此操作。您可以检查/复制来自任何给定域的所有cookie,并根据需要进行欺骗。您可以执行此操作您自己(仅限),因为它是您的PC(或用户登录到PC)。显然,如果你在共享PC上,这是一个问题(在你的所有信息中)。
“复制您的cookie”的行为实际上是恶意软件企图窃取/劫持您的身份(或某些网站上的当前会话)的一种方式。也就是说,除非你有一些恶意软件,否则你不能只是“复制别人的cookie”。
假设logout
已完成,您可以要求用户关闭其浏览器,以便从(文件)系统中删除过期的cookie。