关于 csrf-protection
用于实施跨站请求伪造防护的技能,涵盖令牌模式、Cookie 属性和请求头验证。参考指南包含 Node.js/Express、Flask 和前端方案。
主要功能
- 01同步器令牌模式
- 02双重提交 Cookie 模式
- 03SameSite Cookie 属性
- 04Origin 和 Referer 验证
- 05Node.js、Flask 与前端指南
适用场景
- 01保护表单提交
- 02防护状态变更请求
- 03加强身份验证流程
- 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.mdfrontend-csrf-implementation.mdnodejsexpress-csrf-protection.mdorigin-and-referer-validation.mdpython-flask-csrf-protection.mdscripts/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 Protection | Node.js/Express CSRF 防护 |
| Double Submit Cookie Pattern | 双重提交 Cookie 模式 |
| Python Flask CSRF Protection | Python Flask CSRF 防护 |
| Frontend CSRF Implementation | 前端 CSRF 实现 |
| Origin and Referer Validation | Origin 和 Referer 验证 |
最佳实践
✅ 应该
- 对所有更改状态的操作使用 CSRF 令牌
- 将 Cookie 的 SameSite 设置为 Strict
- 验证 Origin/Referer 标头
- 使用安全的随机令牌
- 实现令牌过期机制
- 仅使用 HTTPS
- 在 AJAX 请求中包含令牌
- 测试 CSRF 防护
❌ 不应该
- 对经过身份验证的请求跳过 CSRF 防护
- 使用 GET 请求更改状态
- 仅信任 Origin 标头
- 重复使用令牌
- 将令牌存储在 localStorage 中
- 未经验证便在 CORS 中允许凭据
评论
支持 Markdown