security-best-practices
バックエンド開発・マイクロサービスにおけるセキュリティのベストプラクティスと安全なコーディングパターンを提供するスキルです。入力バリデーションや認証の実装に重点を置き、セキュアなシステム構築をサポートします。
description の原文を見る
Security best practices for backend development, microservices, and secure coding patterns with emphasis on input validation and authentication
SKILL.md 本文
セキュリティベストプラクティス
バックエンドサービス、マイクロサービス、および機密データや外部入力を扱うコードを開発する際に、これらのセキュリティ原則を適用してください。
入力検証とサニタイゼーション
- 特に外部ソースからの入力に対して、入力検証とサニタイゼーションを厳密に適用する
- アプリケーションの境界ですべてのユーザー入力を検証する
- 入力の検証時には、ブロックリストではなくアローリストを使用する
- インジェクション攻撃を防ぐため、保存または表示する前にデータをサニタイズする
- 厳密な型チェックとスキーマ検証を実装する
認証と認可
- JWT、クッキー、および設定設定について、セキュアなデフォルト値を使用する
- 適切なトークン有効期限と更新メカニズムを実装する
- 環境変数またはシークレット管理サービスを使用してシークレットを安全に保存する
- ソースコードに認証情報や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クッキー属性を使用する
- 機密アクション用に再認証を必須とする
- 適切なセッション管理を実装する
APIセキュリティ
- APIの認証(JWT、APIキー、OAuth)を実装する
- 悪用を防ぐためにレート制限を使用する
- リクエストコンテンツタイプを検証する
- リクエストサイズ制限を実装する
- 監査のためにAPIアクセスをログに記録する
依存関係のセキュリティ
- 脆弱性について依存関係を定期的に監査する
- ロックファイルを使用して一貫したバージョンを確保する
- 未使用の依存関係を削除する
- スタックのセキュリティアドバイザリーを監視する
- CI/CDに自動脆弱性スキャンを実装する
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mindrally
- リポジトリ
- mindrally/skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。