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 属性、カスタムヘッダーを使用して、包括的なクロスサイトリクエストフォージェリ(CSRF)対策を実装します。
使用する場面
- フォーム送信
- 状態を変更する操作
- 認証システム
- 決済処理
- アカウント管理
- あらゆる 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 保護 | Node.js/Express CSRF 保護 |
| 二重送信 Cookie パターン | 二重送信 Cookie パターン |
| Python Flask CSRF 保護 | Python Flask CSRF 保護 |
| フロントエンド CSRF 実装 | フロントエンド CSRF 実装 |
| Origin と Referer の検証 | Origin と Referer の検証 |
ベストプラクティス
✅ 推奨事項
- 状態を変更するすべての操作で CSRF トークンを使用する
- Cookie に SameSite=Strict を設定する
- Origin/Referer ヘッダーを検証する
- 安全でランダムなトークンを使用する
- トークンの有効期限を設定する
- HTTPS のみを使用する
- AJAX リクエストにトークンを含める
- CSRF 対策をテストする
❌ 避けるべきこと
- 認証済みリクエストで CSRF 対策を省略する
- 状態の変更に GET を使用する
- Origin ヘッダーだけを信頼する
- トークンを再利用する
- トークンを localStorage に保存する
- 検証せずに CORS で資格情報を許可する
コメント
Markdown 対応