ai-technology

Claude Codeでセキュリティ事故を防ぐための注意点

Claude Codeでセキュリティ事故を防ぐための注意点

はじめに

Claude Code を使う際、セキュリティが重要です。本記事では、セキュリティ事故を防ぐためのチェックポイントを説明します。

セキュリティチェックリスト

チェック1:入力検証

❌ 危険:
def process_user_input(data):
    query = f"SELECT * FROM users WHERE id = {data}"
    db.execute(query)

✅ 安全:
def process_user_input(data: int):
    if not isinstance(data, int):
        raise ValueError("id must be integer")
    query = "SELECT * FROM users WHERE id = ?"
    db.execute(query, (data,))

確認項目

□ SQL インジェクション対策
□ XSS 対策(HTML エスケープ)
□ 型チェック
□ 範囲チェック

チェック2:認証・認可

❌ 危険:
@app.route("/admin")
def admin_panel():
    return render("admin.html")

✅ 安全:
@app.route("/admin")
@require_login
@require_admin
def admin_panel():
    return render("admin.html")

確認項目

□ 認証の実装
□ 認可の実装
□ トークン管理
□ セッション管理

チェック3:機密情報の取り扱い

❌ 危険:
def log_user(user):
    logger.info(f"User: {user}")  # パスワードも出力
    return user

❌ 危険:
API_KEY = "sk-1234567890"  # コードに直接記載

✅ 安全:
import os
API_KEY = os.getenv("API_KEY")  # 環境変数から取得

def log_user(user):
    safe_user = {k: v for k, v in user.items() if k != "password"}
    logger.info(f"User: {safe_user}")

確認項目

□ パスワードを平文で記載していないか
□ API キーを環境変数から取得しているか
□ ログにパスワード・キーが出力されていないか
□ .env ファイルは .gitignore に入っているか

チェック4:依存関係

❌ 危険:
requirements.txt に脆弱性ある古いバージョン

✅ 安全:
pip install -U pip
pip check  # 脆弱性をスキャン

確認項目

□ requirements.txt をスキャン
□ 脆弱性ある古いバージョンは使っていないか
□ セキュリティアップデートをチェック
□ pip audit で脆弱性確認

チェック5:エラーメッセージ

❌ 危険:
try:
    user = db.get_user(id)
except:
    return f"Error: {error}"  # 詳細情報が出力される

✅ 安全:
try:
    user = db.get_user(id)
except:
    logger.error(f"Error: {error}")  # ログに記録
    return "An error occurred"  # ユーザーには通知

確認項目

□ エラー詳細をユーザーに出力していないか
□ ログには記録しているか
□ デバッグ情報は production では非表示か

開発時のセキュリティワークフロー

【実装前】
□ セキュリティ要件を明記

【実装中】
□ Claude Code に「セキュリティに注意」と明示指示

【レビュー】
□ OWASP Top 10 チェック
□ 入力検証、認証・認可確認
□ 機密情報取り扱い確認

【テスト】
□ セキュリティテスト実行
□ 脆弱性スキャン

【deploy】
□ 環境変数設定確認
□ .gitignore 確認

よくある失敗

❌ 失敗1:セキュリティを後付けにする

「実装してからセキュリティを考える」

大幅な書き換え

時間がかかる

✅ 改善:設計時からセキュリティを組み込む

「実装前にセキュリティ要件を明記」

安全な実装が最初から出る

まとめ

Claude Code 開発でセキュリティを維持:

5 つのチェック

  1. 入力検証
  2. 認証・認可
  3. 機密情報の取り扱い
  4. 依存関係
  5. エラーメッセージ

ワークフロー

AI開発でレビューすべき差分・設定・依存関係と合わせることで、安全な AI 開発が実現します。