当前位置: 首页 > 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。

相关文章:

  • Model Context Protocol -MCP创建Agent - Part1
  • 力扣-1.两数之和
  • ubuntu---100条常用命令
  • 基于AI的报告平台
  • [SAP] 通过事务码Tcode获取程序名
  • Linux字体遍历 获取支持的unicode范围
  • Windows Java gRPC 示例
  • 音频特征工具Librosa包的使用
  • 在Window上面添加交叉编译链 MinGW+NDK
  • jackson-dataformat-xml引入使用后,响应体全是xml
  • 3.1 泰勒公式出发点
  • 9.9 Ollama私有化部署Mistral 7B全指南:命令行交互到API集成全流程解析
  • “端 - 边 - 云”三级智能协同平台的理论建构与技术实现
  • 组合问题(多条件)
  • AWS IoT Core自定义域名配置实战指南
  • 某实战项目登录口处的渗透测试
  • 机器学习 --- 特征工程(一)
  • redis数据结构-09 (ZADD、ZRANGE、ZRANK)
  • 线代第二章矩阵第八节逆矩阵、解矩阵方程
  • 脑机接口技术:开启人类与机器融合的新时代
  • 上海市重大工程一季度开局良好,崇明线等按既定计划加快建设
  • 陕西河南山西等地将现“干热风”灾害,小麦产区如何防范?
  • 上海北外滩开发建设五周年交出亮眼答卷,未来五年有何新目标?
  • 巴基斯坦全国航班仍持续延误或取消
  • 何谓“战略稳定”:“长和平”的实现基础与机制
  • 在地球另一端的交流,架起2万公里间更多共赢的桥梁