保护asp.net网络表单Cookie无法正常工作

时间:2018-09-05 08:23:02

标签: c# asp.net cookies webforms

我想以某种方式保护cookie,即使登录cookie被盗了,它现在仍然可以正常工作,

我正在使用Web形式.net Framework 4.0中的默认asp.net成员身份来保护网站上的某些页面,因此只有注册用户才能在正确登录后访问页面。但是,如果中间人偷了cookie,那么他们仍然可以登录。

我如何防止cookie被盗

我确实站在我的身边

  • 我现在在网站上使用https
  • 第二,我在web.config <httpCookies httpOnlyCookies="true" requireSSL="true" />
  • 中添加了以下代码

即使在收到这些消息后,我也可以通过在不同的浏览器中添加cookie名称和cookie值来登录安全的网站,而无需实际使用登录表单。如果我采取了上述两个步骤,那么为什么不对我的cookie进行加密,以使即使cookie被窃也无法正常工作。.我做错了什么吗?

1 个答案:

答案 0 :(得分:3)

您当前在asp.net中使用了最好的cookie保护。 httpOnlyCookies设置可防止您站点上的任何(可能是注入的)JavaScript都访问令牌,而requireSSL设置可防止浏览器通过非https连接发送令牌。

这通常是相当不错的,比大多数网站都好或更好。

任何可以中间人连接或者可以访问您计算机上Cookie值的人仍然可以访问您的站点,但是没有标准的有效防御措施。

大概是为了复制cookie,您访问了开发人员工具并直接复制了该值。大多数攻击者在没有危害最终用户机器的情况下就无法做到这一点,例如利用恶意浏览器扩展。您的httpOnly标志可防止他们使用脚本执行此操作。

同样,您可能已经安装了诸如Fiddler之类的代理来检查流量,或者企业可能具有用于过滤内容的http代理,但是您的计算机上将安装一个受信任的证书以允许进行此检查。没有它,浏览器将不允许页面加载。

您可以做几件事情来进一步改善它,您可以看看HSTS,但是如果您弄错了它,将会带来严重的后果。 TLS 1.3还包含额外的保护,但是它是全新的,因此对其的支持是非常可变的。

向您的域发出的任何常规Ajax请求仍将发送cookie,但是javascript无法访问cookie的内容。同样,使用Fetch API的框架也可以配置为发送凭据。任何需要将您的身份验证cookie发送到不同域的第三方插件都在做错事。