在ASP.NET MVC中,一次阻止多个客户端同时使用有效cookie的“最佳实践”是什么?
在这种情况下,我们将使用所有OWASP技巧。
这非常好,可以防止用户更改 值,但这并不能阻止不良行为者盗窃整个cookie并在仍然有效的其他地方重复使用 strong>(“ Cookie重播”或“会话固定”,具体取决于您问的是谁)。据我所知,没有标准的.NET配置或样板可以阻止这种情况。
例如,用户A登录并且他们的身份验证cookie在t
分钟内有效。该用户PC上的恶意软件会忽略cookie上的仅HTTP /安全设置,并且能够检索实际存储的cookie,并将其发送给我们的恶意角色。然后,恶意角色可以使用Cookie编辑工具将其添加到他们的浏览器中,并以用户A的身份连接到该站点,直到cookie过期或用户A退出(使会话无效)为止。
理想情况下,如果发现两个客户端同时使用了cookie,是否可以配置.NET以使会话无效?
相似的项目已审核:
哦,S.O。社区,我们知道您有多喜欢“重复项”。
外部修复建议:
bool
值。错误的-只会阻止不良行为者在目标用户注销后使用cookie。它并不能阻止坏演员与目标用户同时玩转。答案 0 :(得分:1)
如果您的目标是
防止不良演员偷走整个Cookie并重新使用它 仍然有效的其他地方
那么答案是否定的。不可能。
您从http请求中获得的信息量大致如下:
由于手头上的信息量有限,实际上您无法区分使用相同Cookie +浏览器+ IP的两个用户。
这就像两个ppl在同一台打印机上打印相同的消息一样,您需要确定哪个消息是由谁打印的。
您能做的最好的事情是,每当用户想要执行任何敏感操作时都要求输入密码,并为其分配一个一次性令牌。 (不友好)
或者您可以通过仅在新IP与登录IP不匹配时才需要它来使其更加友好。 (由于移动用户的IP一直在变化,因此对移动用户不友好)
答案 1 :(得分:0)
理想情况下,如果发现两个客户端同时使用了cookie,是否可以配置.NET以使会话无效?
我不确定您是否知道这个问题有多歧义-特别是“同时”这一概念。 Cookie与每个对象的HTTP请求一起提交。如果加载页面,则cookie随该页面的请求,所有样式表,所有脚本以及所有图像一起发送。因此,您绝对肯定不希望阻止cookie“同时使用”。
我认为您可能对将Cookie绑定到特定客户端端点感兴趣,例如浏览器的可见IP地址。答案很简单:将IP地址嵌入cookie。假设您已使cookie防篡改,则服务器只需在验证cookie的同时对其进行检查即可。
例如,用户A登录并且他们的身份验证cookie持续了t分钟。该用户的PC上的恶意软件。...
句号。地球上没有安全机制可以在合法用户的计算机上防御恶意软件。当然,除了反恶意软件之外。