Back to list
TakumiOkayasu

input-validation

by TakumiOkayasu

dotfiles for work

0🍴 0📅 Jan 23, 2026

SKILL.md


name: input-validation description: ユーザー入力、フォームデータ、APIリクエストを検証する際に使用。

Input Validation

📋 実行前チェック(必須)

このスキルを使うべきか?

  • ユーザー入力を処理する?
  • フォームデータを検証する?
  • APIリクエストを検証する?
  • 外部データを受け取る?

前提条件

  • 入力の期待値を定義したか?
  • エラーメッセージを用意したか?
  • サーバー側での検証を実装したか?

禁止事項の確認

  • クライアント側の検証だけで済ませようとしていないか?
  • 入力をサニタイズせずにDB/HTMLに出力しようとしていないか?
  • 型チェックを省略しようとしていないか?

トリガー

  • ユーザー入力処理時
  • フォームデータ検証時
  • APIリクエスト検証時
  • 外部データ受け取り時

🚨 鉄則

クライアントは信用しない。サーバーで必ず検証。


バリデーション層

クライアント: UX向上(即座のフィードバック)
     ↓
サーバー: ⚠️ 必須(セキュリティ)
     ↓
データベース: 最終防衛(制約)

Zodによる検証

import { z } from 'zod';

const UserSchema = z.object({
  email: z.string().email(),
  password: z.string().min(8),
  age: z.number().int().positive().optional()
});

// 使用
const result = UserSchema.safeParse(input);
if (!result.success) {
  return res.status(400).json({ errors: result.error.issues });
}

SQLインジェクション防止

// ❌ 文字列連結
const query = `SELECT * FROM users WHERE id = '${id}'`;

// ✅ パラメータ化クエリ
const query = 'SELECT * FROM users WHERE id = ?';
db.query(query, [id]);

🚫 禁止事項まとめ

  • クライアント側検証のみ
  • サニタイズなしの出力
  • 型チェックの省略
  • 文字列連結でのSQL構築

Score

Total Score

50/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon