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

会话劫持防护:3步完成基础落地的实操技术指南

时间:2026年06月15日 08:18:19 来源:易频IT社区

一、Cookie安全加固(最易落地的基础防护)

先执行命令安装依赖:npm install express express-session,再创建app.js文件,写入以下完整配置:

``` const express = require('express'); const session = require('express-session'); const app = express(); app.use(express.json()); // 会话配置:所有Cookie必须开启核心安全属性 app.use(session({ name: 'user_sid', // 自定义会话Cookie名,避免默认名暴露技术栈 secret: 'your_unique_secret_key_202408', // 32位以上随机密钥,必须定期更换 resave: false, saveUninitialized: false, cookie: { httpOnly: true, // 禁止JS读取Cookie,彻底阻断XSS窃取 secure: process.env.NODE_ENV === 'production', // 生产环境强制HTTPS,本地调试设为false sameSite: 'Strict', // 严格模式,仅允许同站请求携带Cookie maxAge: 86400000 // 24小时有效期,按需调整 } })); ```

注意点:本地调试时,在启动命令前添加NODE_ENV=development,避免HTTP下secure属性导致Cookie无法生效。

二、请求源合法性校验(阻止跨站请求伪造劫持)

添加全局中间件,仅允许合法域名发起请求,中间件必须放在所有路由之前,完整代码:

``` // 全局请求校验中间件 app.use((req, res, next) => { const allowedOrigins = ['https://你的正式域名.com', 'http://localhost:3000']; // 替换为你的合法域名 const origin = req.headers.origin; // 同站请求或合法跨站请求放行 if (!origin || allowedOrigins.includes(origin)) { return next(); } // 非法请求直接返回403,拒绝服务 return res.status(403).send('Forbidden: Invalid request source'); }); ```

会话劫持防护:3步完成基础落地的实操技术指南

补充:若应用支持JSONP等特殊跨站场景,需将对应域名加入allowedOrigins数组,避免误拦截合法请求。

三、会话ID强制更新机制(阻断固定会话劫持)

在用户登录、权限变更、敏感操作(如修改密码)时,必须重置会话ID,防止攻击者复用已窃取的会话,完整登录路由示例:

``` // 登录路由:验证通过后重置会话ID app.post('/api/login', (req, res) => { const { username, password } = req.body; // 此处替换为你的账号密码验证逻辑(如查询数据库) if (username === 'test' && password === '123456') { // 重置会话ID,完全替换旧会话,阻断复用 req.session.regenerate((err) => { if (err) return res.status(500).send('Login failed'); // 存储用户信息到新会话 req.session.user = { id: 1001, username: 'test' }; return res.send('Login success'); }); } return res.status(401).send('Invalid credentials'); }); ```

关键:regenerate方法会销毁旧会话并生成新ID,旧会话立即失效,彻底避免固定会话攻击。

四、快速验证防护效果

本地测试步骤(零门槛)

  • 1. 启动服务:在app.js目录执行node app.js
  • 2. 查看Cookie:用Chrome开发者工具→应用→Cookie,确认httpOnly、sameSite为Strict勾选
  • 3. 跨站请求测试:用Postman从http://evil.com(本地改host模拟)发送请求到你的接口,返回403则校验生效
  • 4. 会话ID验证:登录后查看网络请求的Set-Cookie,每次登录后ID不同,符合要求

相关推荐

最新

热门

推荐

精选

标签

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

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