mcpField
S
sql-injection-prevention

sql-injection-prevention

github.com/aj-geddesセキュリティ373529 回インストール34 週間前に更新
リポジトリ

sql-injection-prevention について

SQL インジェクションを防ぐためのセキュリティスキルです。プリペアドステートメント、パラメーター化クエリ、ORM の実践、入力検証を扱い、Node.js、Python、Java の実装例を含みます。

主な機能

  1. 01プリペアドステートメントの指針
  2. 02パラメーター化クエリの実践
  3. 03ORM の利用指針
  4. 04入力検証とサニタイズ
  5. 05動的値のホワイトリスト化
  6. 06言語別の実装リファレンス

活用シーン

  1. 01データベースクエリ開発の保護
  2. 02レガシーコードの注入リスク確認
  3. 03セキュリティ監査指摘への対応
  4. 04ユーザー入力を扱う API エンドポイントの保護

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill sql-injection-prevention

インストール後、Claude Code で/sql-injection-preventionを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
input-validation-sanitization.md
java-jdbc-with-prepared-statements.md
nodejs-with-postgresql.md
python-with-sqlalchemy-orm.md
scripts/
validate-schema.sh
templates/
migration-template.sql

詳細

SQL インジェクションの防止

目次

概要

プリペアドステートメント、パラメーター化クエリ、ORM のベストプラクティス、入力検証を使用して、包括的に SQL インジェクションを防止します。

使用する場面

  • データベースクエリの開発
  • レガシーコードのセキュリティレビュー
  • セキュリティ監査での指摘事項の修正
  • API エンドポイントの開発
  • ユーザー入力の処理
  • 動的クエリの生成

クイックスタート

最小限の実行可能な例:

// secure-db.js
const { Pool } = require("pg");

class SecureDatabase {
  constructor() {
    this.pool = new Pool({
      host: process.env.DB_HOST,
      database: process.env.DB_NAME,
      user: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
      max: 20,
      idleTimeoutMillis: 30000,
      connectionTimeoutMillis: 2000,
    });
  }

  /**
   * ✅ SECURE: Parameterized query
   */
  async getUserById(userId) {
    const query = "SELECT * FROM users WHERE id = $1";
    const values = [userId];

    try {
      const result = await this.pool.query(query, values);
// ... (see reference guides for full implementation)

リファレンスガイド

詳細な実装については、references/ ディレクトリを参照してください。

ガイド内容
Node.js with PostgreSQLPostgreSQL を使用する Node.js
Python with SQLAlchemy ORMSQLAlchemy ORM を使用する Python
Java JDBC with Prepared Statementsプリペアドステートメントを使用する Java JDBC
Input Validation & Sanitization入力検証とサニタイズ

ベストプラクティス

✅ 推奨事項
  • 必ずプリペアドステートメントを使用する
  • ORM フレームワークを適切に使用する
  • すべてのユーザー入力を検証する
  • 動的な値は許可リストで管理する
  • 最小権限の DB アカウントを使用する
  • クエリログを有効にする
  • 定期的にセキュリティ監査を実施する
  • パラメーター化クエリを使用する
❌ 禁止事項
  • ユーザー入力を連結する
  • クライアント側の検証を信頼する
  • クエリに文字列フォーマットを使用する
  • テーブル名やカラム名を動的に指定できるようにする
  • DB に過剰な権限を付与する
  • 入力検証を省略する

コメント