security-best-practices について
バックエンドサービス、マイクロサービス、機密データや外部入力を扱うコード向けのセキュリティ開発スキルです。入力検証、アクセス制御、耐障害性、安全な設定、Web や API のリスクを扱います。
主な機能
- 01入力検証とサニタイズ
- 02認証と認可
- 03最小権限とアクセス監査
- 04リトライ、タイムアウト、レート制限
- 05安全な設定とシークレット管理
- 06SQL インジェクション、XSS、CSRF 対策
活用シーン
- 01バックエンドのセキュリティ実践の確認
- 02API の不正利用対策
- 03認証情報と機密データの管理
- 04一般的な Web 攻撃への防御確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill security-best-practicesインストール後、Claude Code で/security-best-practicesを入力して読み込まれたか確認します。
詳細
セキュリティのベストプラクティス
バックエンドサービス、マイクロサービス、機密データや外部入力を扱うコードの開発では、以下のセキュリティ原則を適用してください。
入力の検証とサニタイズ
- 特に外部ソースからの入力について、厳格に検証とサニタイズを行います
- アプリケーションの境界で、すべてのユーザー入力を検証します
- 入力の検証には、拒否リストより許可リストを使用します
- インジェクション攻撃を防ぐため、データを保存または表示する前にサニタイズします
- 厳格な型チェックとスキーマ検証を実施します
認証と認可
- JWT、Cookie、設定には安全なデフォルト値を使用します
- 適切なトークンの有効期限と更新の仕組みを実装します
- 環境変数またはシークレット管理サービスを使用して、シークレットを安全に保管します
- 認証情報や API キーをソースコードにハードコードしてはいけません
- 安全なパスワードハッシュアルゴリズム(bcrypt、Argon2)を使用します
権限の境界
- 明確な権限の境界を設け、機密性の高い操作を分離します
- システム全体で最小権限の原則を適用します
- 適切な場合は、ロールベースアクセス制御(RBAC)を実装します
- 機密性の高いリソースへのアクセスを監査し、ログに記録します
- コンポーネントごとに別々のサービスアカウントを使用します
レジリエンスと保護
- すべての外部呼び出しに、リトライ、指数バックオフ、タイムアウトを実装します
- サービスを保護するため、サーキットブレーカーとレート制限を導入します
- サービス間での不正利用を防ぐため、分散レート制限(例:Redis の使用)を検討します
- サービス拒否を防ぐため、リクエストのスロットリングを実装します
- 適切な上限を設定してコネクションプーリングを使用します
セキュアな設定
- すべてのネットワーク通信に HTTPS/TLS を使用します
- セキュアな HTTP ヘッダー(HSTS、CSP、X-Frame-Options)を設定します
- 本番環境では詳細なエラーメッセージを無効にします
- 依存関係を最新の状態に保ち、脆弱性をスキャンします
- 安全なデフォルト値を使用し、安全に失敗するようにします
エラー処理
- アプリケーション全体で包括的なエラー処理を実装します
- エンドユーザーにスタックトレースや内部情報を決して公開しません
- セキュリティに関係するイベントを適切な詳細度でログに記録します
- セキュリティを維持しながら、デバッグに必要なコンテキストを適切に伝播させます
- 認証および認可の失敗を適切に処理します
シークレット管理
- 環境変数または専用のシークレットマネージャーを使用します
- 認証情報とキーを定期的にローテーションします
- 適切な鍵管理の手法を実装します
- 機密情報をログに記録しないようにします
- 機密データの保存には、保存時の暗号化を使用します
SQL インジェクションの防止
- パラメーター化クエリまたはプリペアドステートメントを使用します
- ユーザー入力を SQL クエリに決して連結してはいけません
- 値を自動的にエスケープする ORM の機能を使用します
- すべてのデータベース入力を検証し、サニタイズします
- データベースユーザーの権限を制限します
クロスサイトスクリプティング(XSS)の防止
- HTML にレンダリングされる出力はすべてエスケープします
- Content Security Policy ヘッダーを使用します
- ユーザーが生成したコンテンツは、表示する前にサニタイズします
- フレームワークが提供するエスケープ関数を使用します
- innerHTML や、同様に危険な API の使用を避けます
クロスサイトリクエストフォージェリ(CSRF)の防止
- 状態を変更する操作には CSRF トークンを実装します
- origin ヘッダーと referer ヘッダーを検証します
- SameSite Cookie 属性を使用します
- 機密性の高い操作には再認証を要求します
- 適切なセッション管理を実装します
API セキュリティ
- API 認証(JWT、API キー、OAuth)を実装します
- 不正利用を防ぐため、レート制限を使用します
- リクエストの Content-Type を検証します
- リクエストサイズの上限を実装します
- 監査のため、API アクセスをログに記録します
依存関係のセキュリティ
- 依存関係の脆弱性を定期的に監査します
- バージョンの一貫性を確保するため、ロックファイルを使用します
- 使用していない依存関係を削除します
- 利用する技術スタックのセキュリティ勧告を監視します
- CI/CD に自動脆弱性スキャンを導入します
コメント
Markdown 対応