当前位置:网站首页 >  资讯

Cookie安全配置完整实操指南:可直接复制的配置规则与代码示例

时间:2026年06月15日 01:56:46 来源:易频IT社区

一、核心安全属性必配规则

所有Web服务的Cookie配置必须包含以下5项,任意缺失会有XSS、CSRF攻击风险,以下为每个属性的实操写法:

1. Secure属性

作用:限制Cookie仅在HTTPS协议下传输,防止明文窃取。必须配置,线上环境强制开启,本地开发(HTTP)可暂关

2. HttpOnly属性

作用:禁止JavaScript读取Cookie,避免XSS攻击窃取用户凭证。必须配置,前端不得通过document.cookie获取敏感Cookie

3. SameSite属性

作用:限制第三方网站发送该Cookie,防范CSRF攻击。可选值:Strict/None/Lax,线上推荐用Lax,跨域接口用None(需配合Secure)。必须配置,不能依赖浏览器默认值

4. Path与Domain属性

作用:精准限制Cookie的作用范围,避免跨路径/跨站点污染。Path必须设为当前服务根路径(/);Domain仅设置当前一级域名(如example.com),禁止设置顶级域(如.com)

5. MaxAge/Expires过期时间

作用:设置Cookie有效期,避免长期存储敏感凭证。敏感Cookie(如登录态)MaxAge设为≤24小时,非敏感Cookie最长不超过7天,禁止永久有效

二、不同技术栈完整配置代码(直接复制)

Cookie安全配置完整实操指南:可直接复制的配置规则与代码示例

以下是3种主流技术栈的完整可直接运行的Cookie安全配置,无修改即可落地:

1. Node.js(Express框架)

需先安装cookie-parser:执行npm install cookie-parser,再添加如下代码:

``` const cookieParser = require('cookie-parser'); app.use(cookieParser()); // 安全设置登录态Cookie示例 app.get('/set-login-cookie', (req, res) => { res.cookie('user_id', '123456789', { secure: true, httpOnly: true, sameSite: 'Lax', path: '/', domain: 'example.com', maxAge: 86400, // 24小时,敏感Cookie上限 overwrite: true // 避免重复Cookie冲突 }); res.send('Cookie安全设置完成'); }); // 跨域接口设置SameSite=None的示例(需配合secure:true) app.get('/set-cross-cookie', (req, res) => { res.cookie('token', 'abcdefghijk', { secure: true, httpOnly: true, sameSite: 'None', path: '/', domain: 'api.example.com', maxAge: 3600 }); res.send('跨域Cookie设置完成'); }); ```

2. Nginx服务端配置

在站点配置文件(如/etc/nginx/conf.d/example.com.conf)的server块中添加,示例:

``` server { listen 443 ssl; server_name example.com; 代理Cookie自动追加安全属性(无需修改应用代码) proxy_cookie_path / "/; Secure; HttpOnly; SameSite=Lax; Max-Age=86400; Domain=example.com"; location / { proxy_pass http://127.0.0.1:3000; } } ```

修改后执行nginx -t验证配置,再执行nginx -s reload生效。

3. PHP配置

适用于PHP7.3+,直接复制如下代码:

``` // 安全设置Cookie的完整写法 setcookie( 'user_id', // Cookie名称 '123456789', // Cookie值 [ 'expires' => time() + 86400, // 24小时有效期 'path' => '/', 'domain' => 'example.com', 'secure' => true, 'httponly' => true, 'samesite' => 'Lax' ] ); // 跨域SameSite=None的写法 setcookie( 'token', 'abcdefghijk', [ 'expires' => time() + 3600, 'path' => '/', 'domain' => 'api.example.com', 'secure' => true, 'httponly' => true, 'samesite' => 'None' ] ); ```

三、线上配置验证步骤(零卡顿)

配置完成后必须验证,确保属性生效,步骤:

  • 打开Chrome浏览器,按F12进入开发者工具
  • 切换到Application标签,展开Storage→Cookies→当前域名
  • 选中已设置的Cookie,查看右侧属性面板:Secure、HttpOnly、SameSite需全部显示为对应开启状态
  • 打开控制台,输入document.cookie,若输出为空或仅能读取非敏感Cookie,则HttpOnly生效
  • 通过POSTMAN或curl模拟跨域请求,验证跨域Cookie是否被正确携带(SameSite=None配置生效时才会携带)

四、常见避坑点

避免以下错误导致配置失效:

  • 错误设置Domain为顶级域(如.com),会导致Cookie被所有子域名共享,提升泄露风险
  • 线上环境未配置Secure,导致HTTP请求时明文传输Cookie,易被劫持
  • SameSite=None未配合Secure,Chrome等高版本浏览器会拦截此类Cookie
  • 敏感Cookie未设置HttpOnly,XSS攻击可直接窃取用户登录态

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图