HttpOnly 的用处
HttpOnly 是一个设置在 cookies 上的属性,用于阻止客户端 JavaScript 访问这些 cookies,以提高网站安全性,特别是防止跨站脚本(XSS)攻击
背景和详细说明
背景 HttpOnly 最初由 Microsoft 引入,并在 2002 年首次出现在 Internet Explorer 中,目的是增强 Web 应用的安全性
原因 出现是为了减少 XSS 攻击的风险,这类攻击可能会劫持用户会话或窃取敏感信息,如认证 tokens
功能 HttpOnly 属性用于限制 cookies 仅可通过 HTTP(S) 请求访问,使得客户端脚本(如 JavaScript)无法读取或修改这些 cookies
设置方法 在设置 cookie 时,将 HttpOnly
标志加入响应头中 例如在 Go 语言的 HTTP 服务器代码中,你可以这样设置:
router.GET("/set-cookie", func(c *gin.Context) {
// 设置一个 HttpOnly 的 Cookie
http.SetCookie(c.Writer, &http.Cookie{
Name: "session_token",
Value: "some_secure_token",
Expires: time.Now().Add(24 * time.Hour), // 设置过期时间
HttpOnly: true, // 确保 HttpOnly 标志被设置
})
c.String(http.StatusOK, "Cookie set successfully")
})
设置后的好处
安全性增强 设置 HttpOnly 后,即使网站出现 XSS 漏洞,也难以通过客户端脚本直接获取标记为 HttpOnly 的 cookies,有效降低信息泄露风险
数据保护 保护用户数据不被恶意脚本窃取,尤其是在涉及身份验证和用户会话管理时