gpt4 book ai didi

c# - 防止多个客户端使用 cookie 重播/cookie

转载 作者:行者123 更新时间:2023-12-05 05:14:59 25 4
gpt4 key购买 nike

在 ASP.NET MVC 中防止一个有效 cookie 一次被多个客户端使用的“最佳实践”是什么?

在这种情况下,我们使用了所有 OWASP 技巧。

  • 严格的 HSTS:每个页面都使用 HTTPS/SSL
  • Cookie 被列为仅限 HTTPS
  • Cookie 被标记为安全
  • Cookie 的有效期很短
  • 还有代码可以防止跨站点请求伪造 (XSRF) 在页面之间更改值。

这一切都很好,可以防止用户更改值,但它不能防止不良行为者窃取整个 cookie 并在仍然有效的情况下在别处重新使用它(“cookie 重播”或“ session 固定”,具体取决于您询问的对象)。据我所知,没有标准的 .NET 配置或样板可以防止这种情况发生。

例如,用户 A 登录并且他们的身份验证 cookie 有效 t 分钟。该用户 PC 上的恶意软件会忽略 cookie 上的仅 HTTP/安全设置,并能够检索实际存储的 cookie,并将其发送给我们的不良行为者。然后,恶意行为者可以使用 cookie 编辑工具将其添加到他们的浏览器并以用户 A 的身份连接到站点,直到 cookie 过期或用户 A 注销(使 session 无效)。

理想情况下,是否可以配置 .NET,以便在发现两个客户端同时使用 cookie 时使 session 无效?

评论的相似项目:

哦,S.O.社区,我们知道您有多喜欢“重复”。

外部修复建议:

  • This page建议在用户登录时在服务器端设置一个 bool 值。错误——这只会阻止不良行为者在预期用户注销后使用 cookie。它无法阻止不良行为者与目标用户同时四处闲逛。
  • This page on StackExchange采用相同的方法,设置 session 值。它遇到了同样的问题。
  • 甚至 Troy Hunt's oft-cited OWASP top 10常见的安全修复程序可帮助您保护 cookie,但并未展示防止同时使用有效 cookie 的方法。

最佳答案

如果你的目标是

prevent a bad actor from stealing the entire cookie and re-using it elsewhere while it is still valid

那么答案是否定的。没有办法。

您从 http 请求中获得的信息量大致如下:

  1. 用户的IP
  2. header (cookie、用户代理等)
  3. 请求正文
  4. 目标 IP(您服务器的 IP)
  5. 网址

由于手头的信息量有限,您确实无法区分使用相同 cookie + 浏览器 + IP 的两个用户。

就好像两个人用同一台打印机打印了同一条消息,而你的任务是找出哪条消息是由谁打印的。

您最好的办法是在每次用户想要执行任何敏感操作时询问密码并为其分配一次性 token 。 (对用户不友好)

或者您可以通过仅在新 IP 与登录 IP 不匹配时才需要它来使它更友好一些。 (对移动用户不友好,因为他们的 IP 几乎一直在变化)

关于c# - 防止多个客户端使用 cookie 重播/cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52012031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com