input-validation-sanitization-auditor について
入力処理を点検し、インジェクションのリスク低減を支援する開発者向けスキルです。XSS・SQLインジェクション対策や検証スキーマを扱います。
主な機能
- 01XSSのエスケープと防止
- 02パラメーター化SQLクエリ
- 03入力検証スキーマ
- 04出力エンコードとサニタイズ
- 05セキュリティテストのチェックリスト
活用シーン
- 01検索ページのHTML出力の確認
- 02入力連結を使うデータベースクエリの点検
- 03リクエストデータの検証ルール定義
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ patricio0312rev/ skills --skill input-validation-sanitization-auditorインストール後、Claude Code で/input-validation-sanitization-auditorを入力して読み込まれたか確認します。
詳細
入力検証とサニタイズの監査担当
適切な入力処理によって、インジェクション攻撃を防ぎます。
XSS の防止
// ❌ DANGEROUS: Direct HTML injection
app.get("/search", (req, res) => {
res.send(`<h1>Results for: ${req.query.q}</h1>`); // XSS!
});
// ✅ SAFE: Properly escaped
import { escape } from "html-escaper";
app.get("/search", (req, res) => {
res.send(`<h1>Results for: ${escape(req.query.q)}</h1>`);
});
// ✅ BETTER: Template engine with auto-escaping
res.render("search", { query: req.query.q }); // EJS/Pug escape by default
SQL インジェクションの防止
// ❌ DANGEROUS: String concatenation
const userId = req.params.id;
const query = `SELECT * FROM users WHERE id = '${userId}'`; // SQL Injection!
db.query(query);
// ✅ SAFE: Parameterized queries
db.query("SELECT * FROM users WHERE id = $1", [userId]);
// ✅ BEST: ORM (Prisma)
await prisma.user.findUnique({ where: { id: userId } });
入力検証スキーマ
import { z } from "zod";
const userSchema = z.object({
email: z.string().email().max(255),
password: z.string().min(12).max(128),
age: z.number().int().min(13).max(120),
website: z.string().url().optional(),
});
app.post("/register", async (req, res) => {
try {
const validated = userSchema.parse(req.body);
await createUser(validated);
res.json({ success: true });
} catch (error) {
res.status(400).json({ error: error.errors });
}
});
出力チェックリスト
- XSS の防止(エスケープ、CSP)
- SQL インジェクションの防止(パラメーター化クエリ)
- コマンドインジェクションの防止
- 入力検証スキーマ
- 出力エンコーディング
- サニタイズライブラリ
- セキュリティテスト ENDFILE
コメント
Markdown 対応