c# - 保护 asp.net webform cookie 不起作用

标签 c# asp.net cookies webforms

我想以某种方式保护 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/

相关文章:

c# - 统计正则表达式在字符串中匹配的次数

javascript - 在 asp.net 项目中,如何提交 javascript 对象?

asp.net防止两次提交表单

cookies - 为什么我的 localhost 项目上会出现 _ga cookie?

c# - 在 Controller MVC3 中获取空值

c#启动一个任务需要多长时间

c# - 从 PropertyInfo 获取属性值

c# - 鼠标悬停在日历控件上时的 Jquery 弹出窗口

node.js - Expressjs cookie 解析器在 cookie 中添加 j : 前缀

c# - 在后面的 C# 代码中设置和检索 cookie