讲师中心 微信公众号
AI工具推荐 视频效率加速

如何使用JavaScript操作Cookie信息_JavaScript如何安全地读写浏览器Cookie

浅强大大_9027

浅强大大_9027

发布时间:2026-01-06 17:12:08

|

732人浏览过

|

来源于php中文网

原创

JavaScript操作Cookie不安全,因document.cookie是明文、无加密、无隔离的纯文本接口,敏感数据应禁用JS存储而交由HttpOnly Cookie由后端管理。

如何使用javascript操作cookie信息_javascript如何安全地读写浏览器cookie

JavaScript 操作 Cookie 本身不安全,document.cookie 是纯文本接口,没有内置加密、作用域隔离或防篡改机制。所有“安全”都依赖开发者手动加固:比如严格校验值、避免存敏感数据、配合 HttpOnly 和 Secure 响应头使用。

为什么不能直接用 document.cookie = "key=value" 写敏感信息

这种写法会把明文数据暴露在前端上下文中,任何脚本(包括第三方库、恶意 XSS 脚本)都能读取、修改甚至发送到外部服务器。浏览器控制台里敲一行 document.cookie 就能看到全部内容。

  • document.cookie 是可读可写的字符串拼接接口,无类型、无结构、无自动转义
  • 写入时若未指定 SameSite、Secure、HttpOnly,默认不具备防护能力
  • 中文或特殊字符(如空格、分号、等号)必须用 encodeURIComponent() 编码,否则会被截断

如何安全地读取 Cookie(带解析和校验)

浏览器不提供原生的 Cookie 解析 API,document.cookie 返回的是类似 "a=1; b=2; c=%E4%BD%A0%E5%A5%BD" 的字符串,必须手动拆分和解码。关键点是避免正则误匹配、处理重复键、过滤空值。

function getCookie(name) {
  const cookies = document.cookie.split('; ').reduce((acc, pair) => {
    const [key, value] = pair.split('=');
    if (key && value !== undefined) {
      acc[key] = decodeURIComponent(value);
    }
    return acc;
  }, {});
  return cookies[name] !== undefined ? cookies[name] : null;
}
<p>// 使用示例
const token = getCookie('auth<em>token');
if (token && /^[a-zA-Z0-9-</em>]{32,}$/.test(token)) {
// 基础格式校验通过,才继续使用
}

如何安全地写入 Cookie(限制作用域 + 防覆盖)

写入 Cookie 必须显式声明 path、domain、Secure、SameSite,否则容易被子路径或子域名覆盖,或在非 HTTPS 页面被忽略。注意:HttpOnly 无法通过 JS 设置,只能由后端响应头下发。

前端设计引擎
前端设计引擎

使用此技能可创建独具特色、具备生产级质量的前端界面,设计品质高。当用户要求构建网页组件、页面、产物、海报或应用程序时(例如:网站、落地页、仪表盘、React 组件、HTML/CSS 布局,或对任意 Web UI 进行样式优化与视觉美化),请启用该能力。输出需为富有创意、精雕细琢的代码与 UI 设计,避免千篇一律的 AI 风格。

下载

立即学习“Java免费学习笔记(深入)”;

  • 始终设置 path=/(除非明确限定在某个子路径)
  • 生产环境必须加 ; Secure(仅 HTTPS 传输)
  • 推荐加 ; SameSite=Strict 或 Lax 防 CSRF
  • 避免覆盖其他系统 Cookie(如 PHPSESSID),写前先检查是否存在同名且不可覆盖的项
function setCookie(name, value, options = {}) {
  const {
    expires = 7 * 24 * 60 * 60 * 1000, // 默认 7 天
    path = '/',
    domain = '',
    secure = location.protocol === 'https:',
    sameSite = 'Lax'
  } = options;
<p>let cookieStr = <code>${name}=${encodeURIComponent(value)}; path=${path}</code>;
if (domain) cookieStr += <code>; domain=${domain}</code>;
if (secure) cookieStr += '; Secure';
if (sameSite) cookieStr += <code>; SameSite=${sameSite}</code>;
if (expires > 0) {
const date = new Date(Date.now() + expires);
cookieStr += <code>; expires=${date.toUTCString()}</code>;
}</p><p>document.cookie = cookieStr;
}</p><p>// 安全写入示例(仅 HTTPS、限定路径、防跨站)
setCookie('user_prefs', JSON.stringify({theme: 'dark'}), {
secure: true,
sameSite: 'Strict',
expires: 30 <em> 24 </em> 60 <em> 60 </em> 1000
});

真正敏感的数据根本不该进 document.cookie

JWT Token、密码、手机号、支付凭证等,绝不能仅靠前端 Cookie 存储。正确做法是:HttpOnly Cookie 由后端签发并管理,前端只通过 fetch 自动携带;需要前端读取的信息(如用户偏好)才用 JS 操作,并确保做过期、签名、格式校验。

很多人卡在“怎么加密 Cookie”,其实问题不在加密——而在于不该让敏感数据出现在 JS 可见范围内。一旦进入 document.cookie 字符串,就等于放弃了保密性底线。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

12479

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1266

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

864

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

1946

2025.08.19

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

14726

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

1725

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

4097

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

6261

2024.03.01

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn