终于搞懂 XSS 为什么能盗号了:Cookie、Session、HttpOnly 一次讲明白

📅 2026/7/15 1:06:44 👁️ 阅读次数 📝 编程学习
终于搞懂 XSS 为什么能盗号了:Cookie、Session、HttpOnly 一次讲明白

刚开始学习 XSS 的时候,我一直有个疑问:

为什么很多人都说:“XSS 能盗号”?

不就是弹个:<script>alert(1)</script>吗?

后来继续学习CookieSession之后,我才慢慢明白:

XSS 真正危险的地方,不是弹窗。

而是:它能获取用户的“登录状态”。

这篇文章,我想尽量用自己的语言以及理解方式,把:

  • Cookie
  • Session
  • HttpOnly
  • XSS 为什么能盗号

一次讲清楚。

一、网站为什么知道“你是谁”?

比如:你登录了某个网站。

关闭页面后再打开:网站居然还认识你。

为什么?

总不能服务器把全国用户都记脑子里吧

其实这里就涉及:

Cookie 和 Session

二、Cookie 到底是什么?

简单理解:Cookie 是浏览器保存的一小段数据。

网站可以让浏览器保存:

Set-Cookie: sessionid=abc123

浏览器收到后:就会自动保存

之后每次访问这个网站时:

浏览器都会自动携带:Cookie: sessionid=abc123

于是服务器就知道:“哦,这还是刚才那个用户。”

三、Session 又是什么?

很多新手第一次学的时候都会懵。

其实:Session 才是真正的“登录状态”

服务器会保存:sessionid=abc123
对应用户:张三

而浏览器只负责保存:abc123

这就是:SessionID

所以整个登录流程其实是:

四、现在回来看 XSS

4.1 Session 劫持

假设网站存在 XSS。

攻击者成功执行了 JS:document.cookie

浏览器就会返回:sessionid=abc123

这时候问题就来了。

因为:这个 SessionID本质上就是用户登录身份。

如果攻击者拿到了它。

那么:服务器可能会认为攻击者就是这个用户。

这就是:Session 劫持

4.2 那xss如何盗cookie呢

五、所以 XSS 为什么危险?

以前我一直以为:XSS 就是弹窗。

后来才发现,弹窗只是:“漏洞存在”的测试方式

真正危险的是:(面试会考)

  • 获取登录态
  • 伪造用户操作
  • 获取敏感信息
  • 页面钓鱼
  • JS 键盘记录

本质上:

XSS = 攻击者能在你的浏览器里执行 JS

这才是最可怕的地方。

六、那为什么现在很多网站偷不到 Cookie 了?

因为现代网站通常会加:HttpOnly

例如:

Set-Cookie: sessionid=abc123; HttpOnly

这个属性的作用就是:不允许 JavaScript 读取 Cookie。

于是:document.cookie 就拿不到 SessionID 了。

这也是为什么:

HttpOnly 是防御 XSS 的重要手段之一。

七、HttpOnly 是不是就无敌了?

其实也不是。

因为:XSS 的本质是“执行 JS”即使偷不到 Cookie。

攻击者仍然可能:

  • 伪造请求
  • 修改页面
  • 钓鱼
  • 获取用户输入
  • 操作当前账号

所以:

HttpOnly 只是降低风险。

并不是彻底解决 XSS。

八、我现在对 XSS 最大的理解变化

以前我学习漏洞:

总喜欢:

  • 背 payload
  • 找 alert
  • 看别人打靶场

后来才发现,真正重要的是:Web 是怎么工作的

比如:

  • 浏览器为什么自动带 Cookie
  • Session 为什么能维持登录
  • JS 为什么能读取 Cookie
  • HttpOnly 为什么能防御

这些东西一旦串起来,很多漏洞就理解了。

给大家看一下真实环境截图:

九、新手学习 XSS 最容易踩的坑

我目前感觉最大的坑就是:只学 payload,不理解原理,这样后面会越来越乱。

因为:

  • DOM 不懂
  • Cookie 不懂
  • Session 不懂
  • 浏览器机制不懂

最后:看起来学了很多漏洞,实际上都是碎片知识。

十、总结

最近学习 Web 安全最大的感受就是:很多漏洞之间其实是连着的。

比如:

当这些东西真正串起来的时候。

才会第一次有:“我开始理解 Web 安全了”的感觉。

后面准备继续学习:

  • CSP
  • CSRF
  • JWT
  • SQL 注入
  • 文件上传

也会继续整理学习笔记分享出来。