我正在 ASP.NET Core 中使用 Cookie 中间件来处理 session cookie。 session cookie 数据由框架使用数据保护 API 进行加密。
只是想详细了解此过程的保护级别。这些是我目前的假设:
Cookie 数据在传输过程中或静态时无法在浏览器中查看,并且防篡改
如果通过 HTTP 嗅探,则可以重放 cookie 数据
如果仅通过 HTTPS 发布和发送 Cookie 数据,则无法重放
如果这些假设中有任何一个是错误的或需要更多细节,那么我将不胜感激。
最佳答案
您的假设是正确的:虽然默认情况下身份验证 cookie 被标记为 HttpOnly
,但没有什么可以阻止攻击者从浏览器容器中窃取 cookie 并按原样使用它来发出恶意请求(如果他设法)在受害者的计算机上安装恶意软件。
将来,ASP.NET Core 将支持一项名为“TLS token 绑定(bind)”的功能,该功能将使窃取身份验证 cookie 变得更加困难。
当服务器和用户代理都支持时,此功能允许服务器将身份验证 cookie 或不记名 token 等敏感数据与只有原始客户端(即浏览器)知道的 secret 值绑定(bind)。
在 ASP.NET Core 中,此功能将在加密级别实现:浏览器传输的 secret 将用于派生数据保护用于保护和取消保护身份验证 cookie 的加密/验证 key ,这样就不会人们将能够使用被盗的 cookie,而无需发送相应的 token 。
关于cookies - ASP.NET Core 中的数据保护 API 是否可以防止重放攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40623107/