一、能够控制cookie的安全性
可以通过设置cookie的httponly和secure属性来控制cookie的安全性。
httponly属性可以防止cookie被JavaScript攻击,保护用户的身份认证信息。
secure属性可以保证cookie只能在https协议下传输,避免cookie被中间人攻击,保障用户隐私。
// 设置具有httponly和secure属性的cookie Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly;
二、cookie劫持与防范
cookie劫持是指黑客通过各种手段获取用户的cookie,从而进行恶意攻击。
可以通过以下几种方式来防范cookie劫持:
1、使用JWT(JSON Web Token)代替cookie存储用户身份信息。
2、使用双因素认证,增加黑客攻击的难度。
3、设置cookie的httpOnly和secure属性,防止JavaScript等攻击方式。
// 使用JWT生成token const jwt = require('jsonwebtoken'); const token = jwt.sign({ user: 'username' }, 'secret'); // 存储token localStorage.setItem('token', token);
三、cookie和Session的区别
cookie和session都是用于存储用户身份信息的方式,但是它们有以下几个不同点:
1、cookie存储在本地,session存储在服务器。
2、cookie具有过期时间,session的过期时间由服务器控制。
3、cookie的大小受限制,session可以存储大量数据。
// 存储session app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: true, cookie: { secure: true } }))
四、cookie和localStorage的区别
cookie和localStorage都是用于存储数据的,但是它们有以下几个不同点:
1、cookie存储在本地且会随着http请求一起发送到服务器,localStorage只存在于浏览器端。
2、cookie容量受限制,localStorage可以存储大量数据。
3、cookie通过设置domain属性可以在多个子域名中共享,localStorage不能跨域共享。
// 存储localStorage localStorage.setItem('token', 'value'); // 读取localStorage const token = localStorage.getItem('token');
五、cookie的删除和清除
可以通过以下几种方式来删除或清除cookie:
1、手动删除cookie。
2、过期时间设置为0,等待浏览器自动清除cookie。
3、调用NPM库如cookie-parser进行删除或清除。
// 手动删除cookie document.cookie = 'token=; expires=Thu, 01 Jan 1970 00:00:00 UTC;'; // 过期时间设置为0 Set-Cookie: id=a3fWa; Expires=Thu, 01 Jan 1970 00:00:00 UTC;