HttpOnly Cookie
2026-10-13HttpOnly cookie,学习,教程,安全
了解HttpOnly Cookie
===============
> 想提高一下服务器安全……先简单了解一下xss攻击
2002 年,微软在 IE6 中首次引入了一个 Cookie 属性——`HttpOnly`
### 传统 Cookie 的缺陷:脚本可随意访问
普通 Cookie 的设计缺陷在于:**客户端脚本(如 JavaScript)可以通过 `document.cookie` 接口自由读写 Cookie**。这原本是为了方便前端业务(例如记住用户偏好),但在 XSS 攻击面前,却成了致命漏洞。
HttpOnly Cookie 的本质是**通过协议层约束,禁止客户端脚本访问敏感 Cookie**。它由服务器在响应头 `Set-Cookie` 中声明,浏览器强制实施这一规则。`document.cookie` 会返回空字符串。
### 如何声明 HttpOnly Cookie?
服务器只需在 `Set-Cookie` 头部添加 `HttpOnly` 标志即可。示例:
```ini
Set-Cookie: sessionId=abc123; Path=/; HttpOnly; Secure; SameSite=Lax
```
* `HttpOnly`:声明该 Cookie 仅限 HTTP(S) 协议层面使用,禁止任何客户端脚本(包括 JavaScript)通过 `document.cookie` 访问。
* 其他声明( `Secure`、`SameSite`),可搭配使用
* `Secure` 标志强制 Cookie 仅在 HTTPS 连接下传输,防止中间人在网络层窃取 Cookie。它与 HttpOnly 是「互补关系」:HttpOnly 防止脚本窃取,Secure 防止传输窃取。
* `SameSite` 控制 Cookie 是否随跨站请求发送,可防范 CSRF(跨站请求伪造)攻击。Lax相对宽松。
- 关于`path=/`,当然可以指定为`/private`,但你的 Axios 请求地址必须统一以 `/private` 开头(例如 `/private/api/login`, `/private/api/data`),这样浏览器才会自动携带 Cookie。
## Django 实现【todo】