セキュリティ考慮
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設定が適切である
- レート制限を実装している