security-checklist について
Micronaut/Kotlin のバックエンドコードを監査するセキュリティスキルです。定められた項目を確認し、合否と修正コード例を含むレポートを作成します。
主な機能
- 01認証と認可の監査
- 02入力検証と SQL インジェクションの確認
- 03一般的な脆弱性の確認
- 04シークレットとレスポンス処理の確認
- 05合否と修正例の提示
活用シーン
- 01マージ前のバックエンド変更レビュー
- 02エンドポイントへの認証・認可の追加
- 03新しいエンドポイントの入力検証確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ c0x12c/ ai-toolkit --skill security-checklistインストール後、Claude Code で/security-checklistを入力して読み込まれたか確認します。
同梱ファイルaudit-reference.md
詳細
セキュリティチェックリスト
Micronaut/Kotlin バックエンドコードに対してセキュリティ監査を実施します。
使用するタイミング
- エンドポイントに認証または認可を追加するとき
- 新規または変更したエンドポイントでユーザー入力を検証するとき
- マージ前にコードのセキュリティ上の問題をレビューするとき
- 一般的な脆弱性(SQL インジェクション、XSS、IDOR)を確認するとき
- シークレット管理を設定するとき
プロセス
コード例、脆弱性一覧表、SAFE/DANGEROUS パターンについては audit-reference.md を参照してください。
- 認証を確認する — すべてのコントローラーに @Secured があり、現在のユーザーはセキュリティコンテキストから取得されていること
- 認可を確認する — リソースを返す前に、ユーザーがそのリソースにアクセスできることを確認する
- 入力検証を確認する — コントローラーパラメーターに @Valid があり、リクエスト DTO に Jakarta アノテーションが付いていること
- SQL インジェクション対策を確認する — Exposed ORM(自動でパラメーター化されます)を使用し、文字列連結による生 SQL は決して使用しないこと
- 一般的な脆弱性を確認する — SQL インジェクション、XSS、CSRF、認証バイパス、IDOR、マスアサインメント、データ漏えい、レート制限
- シークレット管理を確認する — シークレットをハードコードしない、環境変数を使用する、トークン/パスワード/PII をログに記録しない、.env を決してコミットしない
- レスポンスのサニタイズを確認する — 公開する情報はレスポンス DTO で制御し、生のエンティティを決して返さないこと
対話スタイル
- すべてのカテゴリを必ず確認し、項目を省略しません
- 最も危険な問題から先に指摘します
- 説明だけでなく、すべての修正についてコード例を示します
- 問題点と、その修正方法の両方を伝えます
ルール
- すべてのエンドポイントに @Secured アノテーションが必要です
- 管理者用エンドポイントでは OAuthSecurityRule.ADMIN を使用します
- ユーザーがアクセスできるのは自身のリソースのみです(ただし管理者はすべてにアクセスできます)
- 入力は @Valid と Jakarta アノテーションで検証します
- 文字列連結による生 SQL クエリは禁止です
- 機密フィールドはレスポンス DTO から除外します
- トークン/パスワードをログに記録してはいけません
- エラーメッセージから内部情報が漏れてはいけません
- 認証エンドポイントにはレート制限を設けます
出力
各カテゴリの合格/不合格を示すチェックリストレポートを作成します。
- すべてのエンドポイントに @Secured アノテーションがある
- 管理者用エンドポイントで OAuthSecurityRule.ADMIN を使用している
- ユーザーがアクセスできるのは自身のリソースのみである(ただし管理者はすべてにアクセスできる)
- 入力が @Valid と Jakarta アノテーションで検証されている
- 文字列連結による生 SQL クエリがない
- 機密フィールドがレスポンス DTO から除外されている
- トークン/パスワードがログに記録されていない
- エラーメッセージから内部情報が漏れていない
- 認証エンドポイントにレート制限がある
コメント
Markdown 対応