mcpField
C
csrf-protection

csrf-protection

github.com/aj-geddes安全373474 次安装34 周前更新
代码仓库

关于 csrf-protection

用于实施跨站请求伪造防护的技能,涵盖令牌模式、Cookie 属性和请求头验证。参考指南包含 Node.js/Express、Flask 和前端方案。

主要功能

  1. 01同步器令牌模式
  2. 02双重提交 Cookie 模式
  3. 03SameSite Cookie 属性
  4. 04Origin 和 Referer 验证
  5. 05Node.js、Flask 与前端指南

适用场景

  1. 01保护表单提交
  2. 02防护状态变更请求
  3. 03加强身份验证流程
  4. 04保护支付和账户操作

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill csrf-protection

安装后在 Claude Code 中输入/csrf-protection确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
double-submit-cookie-pattern.md
frontend-csrf-implementation.md
nodejsexpress-csrf-protection.md
origin-and-referer-validation.md
python-flask-csrf-protection.md
scripts/
security-checklist.sh

详细介绍

CSRF 防护

目录

概述

使用同步器令牌、双重提交 Cookie、SameSite Cookie 属性和自定义标头,实现全面的跨站请求伪造防护。

适用场景

  • 表单提交
  • 更改状态的操作
  • 身份验证系统
  • 支付处理
  • 账户管理
  • 任何 POST/PUT/DELETE 请求

快速开始

最简可运行示例:

// csrf-protection.js
const crypto = require("crypto");
const csrf = require("csurf");

class CSRFProtection {
  constructor() {
    this.tokens = new Map();
    this.tokenExpiry = 3600000; // 1 hour
  }

  /**
   * Generate CSRF token
   */
  generateToken() {
    return crypto.randomBytes(32).toString("hex");
  }

  /**
   * Create token for session
   */
  createToken(sessionId) {
    const token = this.generateToken();
    const expiry = Date.now() + this.tokenExpiry;

    this.tokens.set(sessionId, {
// ... (see reference guides for full implementation)

参考指南

references/ 目录中的详细实现:

指南内容
Node.js/Express CSRF ProtectionNode.js/Express CSRF 防护
Double Submit Cookie Pattern双重提交 Cookie 模式
Python Flask CSRF ProtectionPython Flask CSRF 防护
Frontend CSRF Implementation前端 CSRF 实现
Origin and Referer ValidationOrigin 和 Referer 验证

最佳实践

✅ 应该
  • 对所有更改状态的操作使用 CSRF 令牌
  • 将 Cookie 的 SameSite 设置为 Strict
  • 验证 Origin/Referer 标头
  • 使用安全的随机令牌
  • 实现令牌过期机制
  • 仅使用 HTTPS
  • 在 AJAX 请求中包含令牌
  • 测试 CSRF 防护
❌ 不应该
  • 对经过身份验证的请求跳过 CSRF 防护
  • 使用 GET 请求更改状态
  • 仅信任 Origin 标头
  • 重复使用令牌
  • 将令牌存储在 localStorage 中
  • 未经验证便在 CORS 中允许凭据

评论

支持 Markdown