有些黑客可以从用户那里窃取cookie并在网站上使用该名称登录吗?

Ari*_*tos 27 asp.net security cookies forms-authentication

读这个问题

不同的用户在aspxanonymous中获得相同的cookie值

并且我开始思考,如果某个人可以通过某种方式真正窃取cookie,然后将其放在他的浏览器上,登录就可以说是管理员了.

您是否知道表单身份验证如何确保即使cookie被存储,黑客也不会使用它进行实际登录?

或者你知道其他任何自动防御机制吗?

先谢谢你.

Tho*_*mas 26

是否可以窃取cookie并以管理员身份进行身份验证?

是的,如果Forms Auth cookie没有加密,有人可以破解他们的cookie以提升他们的特权,或者如果不需要SSL,则可以复制别人的cookie.但是,您可以采取一些措施来降低这些风险:

在system.web/authentication/forms元素上:

  1. requireSSL = TRUE.这要求cookie仅通过SSL传输
  2. slidingExpiration = FALSE.如果为true,则可以重新激活过期的票证.
  3. 无Cookie =假.不要在您尝试强制执行安全性的环境中使用无Cookie会话.
  4. enableCrossAppRedirects =假.如果为false,则不允许跨应用程序处理cookie.
  5. 保护=所有.使用machine.config或web.config中指定的计算机密钥加密和散列Forms Auth cookie.此功能会阻止某人破解自己的cookie,因为此设置告诉系统生成cookie的签名,并在每个身份验证请求中,将签名与传递的cookie进行比较.

如果您愿意,可以通过在Session中添加某种身份验证信息(例如用户的用户名的哈希值)(不是纯文本中的用户名或密码)来添加一些保护.这将要求攻击者窃取Session cookie和Forms Auth cookie.

  • requireSSL = true,是我错过的东西.我认为这是最重要的一个. (2认同)

小智 13

可以在公共无线环境中发生cookie被盗的情况.虽然您或我永远不会在这样的设置中运行,但可能无法阻止您的客户这样做.

如果攻击者知道您所连接的安全站点,那么您的浏览器可能会被欺骗发布到同一URL的非安全版本.那时你的cookie被泄露了.

这就是为什么除了httpOnlyCookies你想要指定requireSSL="true"

<httpCookies httpOnlyCookies="true" requireSSL="true" />
Run Code Online (Sandbox Code Playgroud)

我不同意The Rook的评论,因为我认为这是不公平的;

@Aristos我更新了我的答案.但说实话,如果您使用的是Microsoft开发平台,那么您的应用程序本质上就是不安全的. - 22分钟前的车

安全不是偶然发生的,它不会"开箱即用",至少不是我的经验.没有什么是安全的,除非它被设计成这样,无论平台或工具如何.