当前位置: 首页 > news >正文

Cookie、 Local Storage、 Session Storage三种客户端存储方式

存储特性对比表

特性CookieLocal StorageSession Storage
生命周期可设置过期时间永久保存会话结束自动清除
存储容量4KB左右5-10MB5-10MB
自动发送到服务器每次HTTP请求头携带不发送不发送
访问方式服务端/客户端均可读写仅客户端仅客户端

使用场景及示例

1. Cookie - 用户身份验证
// ASP.NET Core 中设置登录Cookie
public IActionResult Login()
{var cookieOptions = new CookieOptions {Expires = DateTime.Now.AddDays(7),HttpOnly = true,  // 防止XSS攻击Secure = true     // 仅HTTPS传输};Response.Cookies.Append("AuthToken", "加密的令牌", cookieOptions);return RedirectToAction("Dashboard");
}

适用场景:保持登录状态、跟踪用户会话

2. Local Storage - 用户偏好设置
// 在Razor视图中嵌入JavaScript初始化设置
<script>
// 保存主题偏好
function saveTheme(theme) {localStorage.setItem('userTheme', theme);applyTheme(theme);
}// 初始化时读取
const savedTheme = localStorage.getItem('userTheme') || 'light';
applyTheme(savedTheme);
</script>

适用场景:保存长期用户设置(主题、语言)、缓存静态资源

3. Session Storage - 表单暂存
// MVC控制器返回包含恢复表单的视图
public IActionResult Checkout()
{ViewBag.SessionId = HttpContext.Session.Id;return View();
}// 视图中的恢复逻辑
<script>
// 页面加载时恢复草稿
window.addEventListener('load', () => {const formData = sessionStorage.getItem('checkoutForm');if(formData) {document.getElementById('address').value = JSON.parse(formData).address;}
});// 实时保存表单内容
document.querySelector('form').addEventListener('input', (e) => {const formData = {address: document.getElementById('address').value,payment: document.getElementById('payment').value};sessionStorage.setItem('checkoutForm', JSON.stringify(formData));
});
</script>

适用场景:多步骤表单暂存、单页面应用状态保持

安全建议

  1. 敏感数据应存储加密后的值,例如:
    e n c r y p t e d D a t a = A E S E n c r y p t ( k e y , " 原始数据 " ) encryptedData = AES_{Encrypt}(key, "原始数据") encryptedData=AESEncrypt(key,"原始数据")
  2. Cookie建议设置:
    new CookieOptions {SameSite = SameSiteMode.Strict,Domain = ".yourdomain.com",Path = "/",// 其他安全设置...
    }
    
  3. Web Storage使用时需防范XSS攻击:
    // 对存储内容进行转义
    const safeContent = DOMPurify.sanitize(userInput);
    localStorage.setItem('comment', safeContent);
    

根据数据敏感性选择存储方式:身份验证建议用HttpOnly Cookie,非敏感设置可用Local Storage,临时工作数据适合Session Storage。

http://www.xdnf.cn/news/435907.html

相关文章:

  • vshell渗透测试工具介绍
  • 从零实现一个高并发内存池 - 1
  • WHAT - 《成为技术领导者》思考题(第八章)
  • Yarn-Tool接口定义
  • python高级特性二
  • Java 反射
  • 久坐办公自动提醒休息的工具
  • QLineEdit增加点击回显功能
  • PH热榜 | 2025-05-13
  • arctanx 导数 泰勒展开式证明
  • 机器学习2
  • 鹅厂面试数学题
  • 典籍指数问答模块回答格式修改
  • java中的Optional
  • 如何优化 Linux 服务器的磁盘 I/O 性能
  • 【Nova UI】十五、打造组件库之滚动条组件(上):滚动条组件的起步与进阶
  • 【学习笔记】Shell编程---流程控制语句
  • PNG图片转icon图标Python脚本(简易版) - 随笔
  • 动态规划问题 -- 多状态模型(打家劫舍)
  • Java的进制转换
  • 大模型驱动的写实数字人实时对话:创新与实践
  • 谈谈各种IO模型
  • 算法·KMP
  • 1688 API 接口使用限制
  • 【C++】多线程和多进程
  • Java Spring 事件驱动机制
  • 中医诊所药房开处方调剂库存管理h5/pc开源版开发
  • 提供全球86国/地区进出口税费,46国/地区监管条件,53国/地区税费计算
  • 第二十三天打卡
  • 项目管理系统流程:高效运作的关键所在