SuperAPI AI 工具集

session-management

安全与审计

查看项目

更新于 10-15 14:11

技能介绍

用途

Session Management 用于实现全面的会话管理系统,覆盖安全令牌处理、会话持久化、令牌刷新机制、正确的登出流程以及跨不同后端框架的 CSRF 防护。

何时使用

  • 实现用户认证系统
  • 管理会话状态与用户上下文
  • 处理 JWT 令牌刷新周期
  • 实现登出功能
  • 防御 CSRF 攻击
  • 管理会话过期与清理

主要能力

该技能提供以下参考指南(位于 references/ 目录):

  • JWT Token Generation and Validation(JWT 令牌生成与验证)
  • Node.js/Express JWT Implementation(Node.js/Express JWT 实现)
  • Session Storage with Redis(使用 Redis 的会话存储)
  • CSRF Protection(CSRF 防护)
  • Session Middleware Chain(会话中间件链)
  • Token Refresh Endpoint(令牌刷新端点)
  • Session Cleanup and Maintenance(会话清理与维护)

使用方式

快速开始提供一个最小可运行示例(Python/Flask),展示 TokenManager 类,用于生成访问令牌与刷新令牌:

# Python/Flask Example
from flask import current_app
from datetime import datetime, timedelta
import jwt
import os

class TokenManager:
    def __init__(self, secret_key=None):
        self.secret_key = secret_key or os.getenv('JWT_SECRET')
        self.algorithm = 'HS256'
        self.access_token_expires_hours = 1
        self.refresh_token_expires_days = 7

    def generate_tokens(self, user_id, email, role='user'):
        """Generate both access and refresh tokens"""
        now = datetime.utcnow()

        # Access token
        access_payload = {
            'user_id': user_id,
            'email': email,
            'role': role,
            'type': 'access',
            'iat': now,
            'exp': now + timedelta(hours=self.access_token_expires_hours)
// ... (see reference guides for full implementation)

完整实现请参见参考指南。

最佳实践

✅ 应该做:

  • 所有会话传输使用 HTTPS
  • 实现安全 Cookie(httpOnly、sameSite、secure 标志)
  • 使用具有适当过期时间的 JWT
  • 实现令牌刷新机制
  • 安全存储刷新令牌
  • 在每个请求上验证令牌
  • 使用强密钥
  • 实现会话超时
  • 记录认证事件
  • 登出时清除会话数据
  • 对改变状态的请求使用 CSRF 令牌

❌ 不应做:

  • 在令牌中存储敏感数据
  • 使用过短的密钥
  • 在 URL 中传输令牌
  • 忽略令牌过期
  • 跨环境复用令牌密钥
  • 将令牌存储在 localStorage(应使用 httpOnly Cookie)
  • 在没有 HTTPS 的情况下实现会话
  • 忘记验证令牌签名
  • 在日志中暴露会话 ID
  • 使用可预测的会话 ID

适用场景与限制

该技能适用于需要用户认证与会话管理的后端服务,支持 Python/Flask 与 Node.js/Express 等框架,并涉及 Redis 会话存储。具体支持的框架范围、版本要求、依赖安装命令及完整代码实现,资料中暂未提供。