HttpOnly
是一个 HTTP 响应头,用于指示浏览器将特定的 cookie 设置为仅 HTTP(S) 访问,从而防止客户端脚本(如 JavaScript)访问这些 cookie。这一特性有助于提高网站的安全性,特别是在防范跨站脚本攻击(XSS)时非常有用。
当服务器发送一个带有 HttpOnly
标志的 cookie 给浏览器时,浏览器会存储这个 cookie,但不会将其暴露给任何通过 JavaScript 发起的请求。这意味着即使网页中存在恶意脚本,也无法读取或修改这些标记为 HttpOnly
的 cookie。
HttpOnly
主要应用于存储敏感信息的 cookie,如:
在服务器端设置 HttpOnly
cookie 的方式取决于所使用的编程语言和框架。以下是一些常见的例子:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.cookie('sessionId', '123456', { httpOnly: true });
res.send('Cookie has been set');
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
<?php
setcookie("sessionId", "123456", time()+3600, "/", "", false, true); // 最后一个参数为 true 表示启用 HttpOnly
?>
@GetMapping("/")
public String setCookie(HttpServletResponse response) {
Cookie cookie = new Cookie("sessionId", "123456");
cookie.setHttpOnly(true);
response.addCookie(cookie);
return "Cookie has been set";
}
问题:设置了 HttpOnly
的 cookie 仍然可以通过 JavaScript 访问。
原因:这通常是由于浏览器不支持 HttpOnly
属性或者服务器没有正确设置该属性。
解决方法:
HttpOnly
。HttpOnly
属性被正确设置。Set-Cookie
字段中包含了 HttpOnly
。HttpOnly
cookie 不能通过 JavaScript 的 document.cookie
API 访问。通过合理使用 HttpOnly
cookie,可以有效提升网站的安全防护水平。
没有搜到相关的沙龙