まとめと練習
重要なポイント
- AIが生成したコードはデフォルトで安全でない。きれいな第一印象を信じず、脆弱性があると仮定して探しにいこう。
- 大きなカテゴリは繰り返す: インジェクション、露出したシークレット、欠落した認可、安全でないファイルアップロード、そして発明された依存関係。
- 認可はログイン単位ではなくリクエスト単位だ — どのエンドポイントも、ただログインしているかではなく、このユーザーがこの操作をしてよいかを確認しなければならない。
- プッシュのたびに
gitleaksのようなシークレットスキャナを走らせ、一度でも漏れたキーはローテーションする。スキップできないようスキャンをに組み込もう。 - 90日目は初日より危険だ — セキュリティのゲートを、スキップしないほど安く、スキップできないほど自動にしよう。
試してみよう
認証・ユーザーデータ・アップロードを扱う自分の機能を一つ選び、下の敵対的レビュー用プロンプトを走らせる。AIが報告する脆弱性ごとに、それを悪用する正確なリクエストと最小限の修正を求め、修正を適用してからプロンプトを再実行する。最後にリポジトリと履歴全体にgitleaks(またはプラットフォームのシークレットスキャン)を実行して締めくくる。
この章のプロンプト
Here is the code for a feature that handles [auth / user data / uploads]:
[paste the code].
Act as an attacker reviewing this for security holes. Specifically check:
- broken authorization (can a user act on another user's data?)
- injection via input (SQL injection, XSS, command injection)
- exposed secrets or keys in code or responses
- unsafe file handling (type, size, path, generated names)
- missing validation or rate limits
For EACH issue, show the exact request that exploits it, then the fix.
Do NOT reassure me — assume there IS a vulnerability and find it.