さとまたwiki

セキュリティ考慮

AI生成コードのセキュリティリスクと対策

重要な注意

AIが生成するコードには、セキュリティ上の問題が含まれる可能性があります。 特に認証、認可、データ処理に関わるコードは、必ず人間がレビューしてください。

AI生成コードによくある脆弱性

SQLインジェクション

危険なコード

javascript
const query = `SELECT * FROM users
WHERE email = '${email}'`;

安全なコード

javascript
const query = `SELECT * FROM users
WHERE email = ?`;
db.query(query, [email]);

XSS(クロスサイトスクリプティング)

危険なコード

javascript
element.innerHTML = userInput;

安全なコード

javascript
element.textContent = userInput;
// or use DOMPurify

不適切な認証

危険なコード

javascript
if (password === storedPassword) {
  // login
}

安全なコード

javascript
if (await bcrypt.compare(
  password, hashedPassword
)) { /* login */ }

機密情報のハードコード

危険なコード

javascript
const API_KEY = "sk-abc123...";

安全なコード

javascript
const API_KEY = process.env.API_KEY;

セキュリティを意識したプロンプト

# 認証機能を作る時

"JWT認証を実装して。セキュリティ要件:
- パスワードはbcryptでハッシュ化
- JWTの有効期限は1時間
- リフレッシュトークンも実装
- レート制限を追加"

# 入力を扱う時

"このフォームにバリデーションを追加して。
- Zodでサーバーサイドバリデーション
- SQLインジェクション対策(パラメータ化クエリ)
- XSS対策(エスケープ処理)
- 長さ制限"

# レビュー依頼

"このコードのセキュリティレビューをして。
OWASP Top 10の観点でチェックして:
- インジェクション
- 認証の欠陥
- 機密データの露出
- XXE
- アクセス制御の欠陥"

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

  • ユーザー入力は全てバリデーション/サニタイズされている
  • パスワードはハッシュ化して保存している
  • APIキー等の機密情報は環境変数に格納している
  • SQLはパラメータ化クエリを使用している
  • HTMLへの出力はエスケープされている
  • HTTPS を使用している
  • CORS設定が適切である
  • レート制限を実装している

この記事はClaude Opus 4.6によって作成されました