Communityコーディング&開発github.com

secure-webapp

OWASPに基づいた実践的なWebアプリケーションセキュリティガイダンスを提供します。認証、セッション、JWT/OAuth/OIDC、ユーザー入力、DBクエリ、ファイルアップロード、APIエンドポイント、クッキー/CORS/CSP/セキュリティヘッダー、シークレット、リダイレクト、外部URL取得、ログ/エラー、依存関係、脅威モデリング、ハードニング、監査、LLM/AI機能(プロンプト処理、エージェントツール、MCPサーバーなど)、XSS、SQLi、IDOR、CSRF、SSRF、オープンリダイレクト、プロトタイプ汚染、デシリアライゼーション、プロンプトインジェクション、サプライチェーンリスクなどの脆弱性クラスに対応します。

secure-webapp とは?

このスキルは、OWASP Top 10:2025、ASVS 5.0、チートシートシリーズ、およびWSTGの主要な資料を統合し、実践的なWebアプリケーションセキュリティガイダンスを提供します。デフォルトモードでは、コード作成中に静かにセキュリティを考慮し、最も影響の大きい問題のみをフラグ付けします。監査モード(`audit`)では、`assets/audit-checklist.md`を読み込み、優先順位付けされた所見を生成します。また、`quick-check`(最高リスクのみの簡易チェック)、`harden`(直接的なセキュリティ修正の適用)、`remediate`(監査→修正の反復ループ)、`design-review`(実装前の脅威モデリング)、`report`(正式なレポートの生成)、`update`(スキル自身のアップデート)、`maintain`(スキルパッケージのメンテナンス)などの複数のモードを提供します。このスキルは、Claude Code、Codex、Gemini CLIなど、スキルや`AGENTS.md`/`GEMINI.md`を読み込む任意のエージェントで動作するよう設計されています。

対応✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/gabrielereylane/lovable-skills/tree/HEAD/.agents/skills/secure-webapp

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Secure Web App Coding

OWASP Top 10:2025、ASVS 5.0、チートシートシリーズ、および選択されたWSTG資料を、実用的なWebアプリケーションセキュリティガイダンスに変換します。

デフォルト(インライン): 静かにセキュアなコードを書き、近くにある最も影響の大きい問題のみをフラグ付けします。 監査: 「review」「audit」「harden」「is this secure?」、またはインシデントフォローアップ時に、assets/audit-checklist.mdを読み、優先順位付けされた所見を生成します。

モードは、$secure-webapp <mode> で呼び出します:

  • $secure-webapp audit:完全な優先順位レビュー。assets/audit-checklist.mdを読みます。
  • $secure-webapp quick-check:最高リスクのみのパス。認可、認証/セッション、シークレット、インジェクション/XSS、アップロード、SSRF、トークン。完全なチェックリストレポートはありません。
  • $secure-webapp harden:編集が許可されている場所に直接セキュアな変更を適用。アーキテクチャを維持する小さなパッチ。検証し、製品の承認が必要なものをフラグ付けします。
  • $secure-webapp remediate:監査→修正の反復ループ。最初にassets/remediate-checklist.mdを完全に読みます。
  • $secure-webapp design-review:実装前の脅威モデル。前提条件、信頼境界、悪用ケース、必須の制御、未解決の質問。
  • $secure-webapp report:docs/security-audit-report-YYYY-MM-DD.mdに正式なレポートを作成。最初にassets/report-template.mdを完全に読み、すべての手順に従います。このセッションで事前の監査が必要です。ファイルに書き込み、チャットには絶対に書き込みません。
  • $secure-webapp update:npx --yes github:hov172/secure-webapp-skill --globalを実行してこのインストールを自己更新します。バージョンチェックを行い、新しいリリースが存在する場合のみ再インストールします。フラグ:--claude/--codex/--gemini、--check、--force。
  • $secure-webapp maintain:ソースリポジトリのクローンからスキルパッケージ自体を更新します。scripts/README.mdを参照。

タスクに必要なリファレンスのみを読み込みます。すべてを一括でロードすることは決してしません。

ルーティング

タスクの内容ロードするもの
信頼できない文字列がHTML/DOM/SQL/シェル/NoSQL/LDAP/正規表現/CSVとして解釈されるreferences/input-handling.md
ログイン、サインアップ、パスワード、MFA、リセット、ブルートフォース、セッション、クッキー、ログアウトreferences/auth-and-sessions.md
権限、ロール、所有権チェック、IDOR、テナント分離references/authorization.md
JWT、API/リフレッシュトークン、署名と検証、OAuth/OIDC、PKCE、statereferences/tokens-and-oauth.md
REST/GraphQL/WebSocketエンドポイント、レート制限、マスアサインメント、レスポンス形状、アップロード/ダウンロード、パストラバーサル、事前署名付きURLreferences/apis-and-files.md
Secure/HttpOnly/SameSite、CSP、CORS、CSRF、ヘッダー、iframe、postMessagereferences/frontend-and-headers.md
環境変数、.env、鍵、シークレットマネージャー、デバッグモード、デフォルト値references/secrets-and-config.md
暗号化、パスワードハッシュ化、アルゴリズム、鍵管理、PIIreferences/data-and-crypto.md
依存関係、ロックファイル、SBOM、CI/CD、GitHub Actions、署名付きアーティファクトreferences/supply-chain.md
ユーザー制御の外部URL、SSRF、競合状態、デシリアライゼーション、プロトタイプ汚染references/secure-coding.md
ロギング、エラーレスポンス、スタックトレース、監査証跡、フェイルクローズ、ロールバックreferences/logging-and-errors.md
新機能設計、脅威モデリング、マルチテナンシー、セキュアバイデザインの決定references/insecure-design.md
LLM/AI機能、プロンプト構築、RAG、エージェントツール呼び出し、MCPサーバー、モデル出力のレンダリングまたは実行references/ai-and-llm.md

常時監視リスト

Webコードでこれらを見かけたら、1つの具体的な修正とともに軽くフラグ付けします:

  1. リソースルートに対するサーバーサイドの認証/所有権チェックの欠如。WHERE owner_id = :current_user のようなクエリレベルのスコープ付けを推奨します。
  2. ハードコードされたシークレット、資格情報、JWTシークレット、APIキー、またはコミットされた .env ファイル。
  3. 文字列構築のSQL/NoSQL/シェルクエリ。パラメータ化クエリ、安全なビルダー、またはargv APIを使用してください。
  4. 平文または高速ハッシュのパスワード。argon2id、scrypt、またはbcryptを使用してください。PBKDF2は必要な場合のみ。
  5. 固定されていないアルゴリズム、exp/iss/aud チェックの欠如、またはコード内のシークレットによるJWT検証。
  6. ユーザーコンテンツを含む dangerouslySetInnerHTML、v-html、または innerHTML。テキストとしてレンダリングするかサニタイズしてください。
  7. ワイルドカードまたはエコーされたオリジンを持つ資格情報付きCORS。厳格な許可リストを使用してください。
  8. ログイン、サインアップ、リセット、MFA/OTP、または高負荷エンドポイントに対するレート制限の欠如。
  9. 冗長な本番エラー、スタックトレース、SQL/ORMの詳細、またはクライアントに公開されたデバッグモード。
  10. 検証されていない next、returnTo、またはURLパラメータからのオープンリダイレクト。
  11. ユーザー提供のURLからのSSRF。許可リストと、DNSおよびリダイレクト後のプライベートIPブロッキングなし。
  12. パスワード、トークン、セッションID、シークレット、または不要なPIIを含むログ。
  13. クライアントのみのセキュリティ制御:隠しフィールド、無効化されたボタン、クライアントロールクレーム、フロントエンドのみの検証。
  14. サイズ、タイプ、パス、ストレージ、または生成された名前の制御がないファイルアップロード。
  15. 認証、認可、レート制限、フィーチャーフラグ、またはトランザクション周りのフェイルオープン例外パス。
  16. 非アトミックな残高、クォータ、支払い、在庫、クーポン、またはワンタイムトークンの状態変更。
  17. モデル/LLM出力が未チェックでシンクに到達する — innerHTML、シェル、SQL、ファイルパス、fetch URL、または下流エージェント。信頼できない入力として扱ってください。
  18. エンドユーザーではなくサービスアカウントに対して認可されたエージェントツール呼び出し、またはプロンプトインジェクションをRCE、SQLi、SSRFに変える汎用的な run_shell/execute_sql/http_request ツール。
  19. システムプロンプトに連結された信頼できないテキスト、モデルコンテキスト内のシークレットまたは他のユーザーのデータ。
  20. ピン留めとロックファイルが期待される場所での可変の依存関係またはCIアクション参照 — 移動されたタグは、そのジョブのシークレットでそのジョブ内で攻撃者コードを実行します。ジョブがデプロイ資格情報、署名鍵、または公開権限を保持している場合は高リスクと評価します。OIDCが存在する長期有効なクラウド資格情報についても同様です。モノレポ内のすべてのワークスペースを監査し、high より弱い --audit-level をフラグ付けします。

動作

  • デフォルトでセキュアなコードを書き、長い説明は不要。セキュリティ関連の選択を簡潔に名前付けすると役立つ場合があります。
  • アプリの重要度に応じた厳格さを適用し、使い捨てのプロトタイプにエンタープライズレベルの制御を強制しないでください。
  • 意図的にセキュアでないコードを生成しないでください。安全な代替手段を提供し、制約を一文で述べてください。
  • 新しい信頼境界機能の場合、以下を確認:信頼できない入力、認可、障害モード、保存データ、悪用パス。
  • 監査時は実際のコードを検査し、必要なスコープ質問のみを行い、重要度 + 場所 + 証拠 + 修正を優先順位付けて報告します。
  • 要求されない限り、OWASP要件番号を引用しないでください。
  • 侵入テストを実行すると主張しないでください。これはコードおよび設計レビューです。

適用範囲

主流のWebスタック — Next.js、Express、Django、Flask、FastAPI、Rails、Spring、Laravel、Go、および類似のもの。リファレンスがカバーしていないニッチな分野については、推測するのではなく、そう述べて該当するOWASPソースを指摘します。

エージェント非依存:Claude Code、Codex、Gemini CLI、およびスキルまたは AGENTS.md/GEMINI.md を読み込むその他のエージェントで動作します。このファイルがツールを指定している場合、環境に応じた同等のツールを使用してください。

関連スキル