什么是ASP.NET MVC中防止有效cookie同时被多个客户端使用的“最佳实践”?
在这种情况下,我们使用了所有OWASP技巧。
- 严格的HSTS:每个页面都使用HTTPS/SSL - 将Cookie标记为仅限HTTPS - Cookies被标记为安全 - Cookies具有短期过期时间 - 还有代码来防止跨站点请求伪造(XSRF)从一个页面更改值到另一个页面。
这些措施可以防止用户更改值,但不能防止恶意行为者在cookie仍然有效时窃取整个cookie并在其他地方重复使用它(称为“cookie回放”或“会话固定”,具体取决于问谁)。据我所知,没有标准的.NET配置或样板可以防止这种情况。
例如,用户A登录,其身份验证cookie有效时间为
理想情况下,.NET是否可以配置,以便如果发现cookie同时在两个客户端中使用,则会话将无效?
类似项目已经审核:社区,我们知道您有多喜欢“重复”。
在这种情况下,我们使用了所有OWASP技巧。
- 严格的HSTS:每个页面都使用HTTPS/SSL - 将Cookie标记为仅限HTTPS - Cookies被标记为安全 - Cookies具有短期过期时间 - 还有代码来防止跨站点请求伪造(XSRF)从一个页面更改值到另一个页面。
这些措施可以防止用户更改值,但不能防止恶意行为者在cookie仍然有效时窃取整个cookie并在其他地方重复使用它(称为“cookie回放”或“会话固定”,具体取决于问谁)。据我所知,没有标准的.NET配置或样板可以防止这种情况。
例如,用户A登录,其身份验证cookie有效时间为
t
分钟。用户计算机上的恶意软件忽略了cookie上的HTTP-only / secure设置,并能够检索实际存储的cookie并将其发送给我们的不良行为者。然后,不良行为者可以使用cookie编辑工具将其添加到其浏览器中,并作为用户A连接到该网站,直到cookie过期或用户A注销(使会话无效)。理想情况下,.NET是否可以配置,以便如果发现cookie同时在两个客户端中使用,则会话将无效?
类似项目已经审核:社区,我们知道您有多喜欢“重复”。
- Asp.net - 使用 SSL 防止 cookie 重放攻击:SSL 不能防止 cookie 重放,只能防止中途篡改。
- 防止 ASP.NET 中身份验证 cookie 的重复使用:特别针对用户注销后的 cookie 使用;在此情况下,用户仍然登录,而恶意行为者可以访问。
- ASP.NET cookie 重放修复,不存储身份验证令牌在服务器上?:明确要求不在服务器上存储令牌,我不会排除这个作为答案。
外部修复建议:
- 这个页面建议在用户登录时在服务器端设置
bool
值。这是错误的——那只能防止恶意用户在预期用户登出后使用cookie,对于恶意用户与预期用户同时访问则没有任何作用。 - StackExchange上的这个页面采取了相同的方法,设置了一个会话值。它也面临着同样的问题。
- 即使Troy Hunt经常引用的OWASP前10名常见安全修复措施可以帮助您保护Cookie,但并没有演示一种防止有效Cookie同时使用的方法。