我想以某种方式保护 cookie,即使登录 cookie 被盗,它现在仍然可以工作,
我在 web-form .net Framework 4.0 中使用默认的 asp.net 成员身份来保护网站上的某些页面,因此只有注册用户在正确登录后才能访问页面。但如果中间人窃取了 cookie,那么他们仍然可以登录。
如何防止cookie被盗
我从我身边跟随
- 我现在在网站上使用 https
- 其次,我在 web.config
<httpCookies httpOnlyCookies="true" requireSSL="true" />
中添加了以下代码
即使在收到这些消息后,我也可以通过在不同的浏览器中添加 cookie 名称和 cookie 值来登录安全网站,而无需实际使用登录表单。如果我采取了上述两个步骤,那么为什么我的 cookie 没有加密,这样即使 cookie 被盗它也不应该工作..我做错了什么吗
最佳答案
您当前正在使用 asp.net 中最好的 cookie 保护。 httpOnlyCookies
设置可防止您网站上的任何(可能是注入(inject)的)JavaScript 访问 token ,而 requireSSL
设置可防止浏览器通过非 https
连接。
这通常相当不错,与大多数网站一样好或更好。
任何可以中间人连接的人,或者可以访问您计算机上 cookie 值的人仍然可以访问您的网站,但没有标准的有效防御措施来防止这种情况。
大概是为了复制cookie,您访问了开发者工具,并直接复制了该值。如果没有损害最终用户的计算机(例如使用恶意浏览器扩展),大多数攻击者就无法做到这一点。您的 httpOnly
标志阻止他们使用脚本执行此操作。
同样,您可能安装了像 Fiddler 这样的代理来检查流量,或者企业可能有一个过滤内容的 http 代理,但您的计算机上会安装一个受信任的证书,允许进行此检查。如果没有它,浏览器将不允许加载页面。
您可以采取一些措施来进一步改进它,您可以查看 HSTS然而,如果你做错了事情,就会产生严重的后果。 TLS 1.3 还包含额外的保护,但它是全新的,因此对其的支持变化很大。
向您的域发出的任何常规 ajax 请求仍会发送 cookie,但 javascript 无法访问 cookie 的内容。同样,使用 Fetch API 的框架也可以配置为发送凭据。任何需要将您的身份验证 cookie 发送到不同域的第三方插件都是错误的。
关于c# - 保护 asp.net webform cookie 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52180465/