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 つのチェック:
- 入力検証
- 認証・認可
- 機密情報の取り扱い
- 依存関係
- エラーメッセージ
ワークフロー:
- 設計時にセキュリティ要件を明記
- 実装中に Claude Code に明示指示
- レビューでセキュリティ確認
- テストで脆弱性スキャン
AI開発でレビューすべき差分・設定・依存関係と合わせることで、安全な AI 開発が実現します。