HttpOnly Cookie
HttpOnly Cookie 是一种具有特殊属性的 Cookie,旨在提高 Web 应用程序的安全性。通过将 HttpOnly
属性设置为 true
,可以防止客户端 JavaScript 访问这些 Cookie,从而减小 XSS(跨站脚本)攻击的风险
比如Node.js:
const express = require('express');
const app = express();
app.get('/setcookie', (req, res) => {
res.cookie('exampleCookie', 'cookieValue', { httpOnly: true, maxAge: 3600000 });
res.send('HttpOnly Cookie 已设置');
});
app.listen(3000, () => {
console.log('服务器正在运行,端口 3000');
});
客户端将无法使用javascript访问cookie
console.log(document.cookie); //输出undefined
我们可以使用Httponly cookie,在服务器端生成和保存token,防止token被客户端访问,比如
res.cookie('authToken', token, { httpOnly: true, maxAge: 3600000 }); // 有效期为1小时
res.send('登录成功,token 已保存到 HttpOnly Cookie');
});
客户端无法用代码访问cookie,每次发送请求后,由服务器端读取HttpOnly cookie,比如:
app.get('/auth', (req, res) => {
const token = req.cookies.authToken;
// 验证 token 是否有效
if (token === 'xxxxxxxx') {
res.send('允许访问');
} else {
res.status(401).send('未授权');
}
});