1. Webセキュリティ入門と基本原則 MOC
- Webセキュリティとは
- 脅威モデリング (Threat Modeling) for Web Applications
- 脆弱性、脅威、リスクの定義と関係
- 攻撃ベクタ (Attack Vector) と攻撃対象領域 (Attack Surface)
- 主要なセキュリティ原則
- OWASP (Open Web Application Security Project) MOC
2. 一般的なWeb脆弱性とその対策 MOC (OWASP Top 10ベースで拡張)
2.1. インジェクション攻撃 (Injection Attacks) MOC
- インジェクション攻撃の概要 (信頼できないデータがコマンドやクエリの一部として送信される)
- SQLインジェクション (SQLi) MOC
[[SQLiの仕組みと影響 (データ窃取、改ざん、破壊)]][[SQLiの種類 (エラーベース, UNIONベース, ブラインドSQLi: ブーリアンベース/時間ベース)]][[SQLi攻撃の具体例]]- SQLi対策
[[プリペアドステートメント (Parameterized Queries)]](最重要)[[ストアドプロシージャ (限定的効果)]][[入力値のエスケープ (最終手段、不完全な場合あり)]][[ORMの安全な使用]][[最小権限の原則 (DBユーザー権限)]][[Web Application Firewall (WAF)による緩和]]
- NoSQLインジェクション MOC (MongoDB, CouchDBなど)
[[NoSQLインジェクションの仕組みと攻撃例]][[対策 (適切なクエリ構築、入力サニタイズ)]]
- OSコマンドインジェクション MOC
[[OSコマンドインジェクションの仕組みと影響 (サーバ乗っ取り)]][[攻撃例 (ping,lsなどの悪用)]][[対策 (外部コマンド呼び出しの回避、エスケープ、安全なAPI利用)]]
- LDAPインジェクション MOC
- XQueryインジェクション MOC
- XML外部実体参照 (XXE - XML External Entities) MOC (OWASP Top 10:2017 A4)
[[XXEの仕組みと影響 (情報漏洩、SSRF)]][[XXE攻撃の例 (外部DTD利用)]][[対策 (XMLパーサの安全な設定、外部実体参照の無効化)]]
- テンプレートインジェクション (Template Injection) MOC (SSTI - Server-Side Template Injection)
2.2. クロスサイトスクリプティング (XSS - Cross-Site Scripting) MOC (OWASP Top 10:2021 A03)
- XSSの仕組みと影響 (悪意のあるスクリプトのユーザーブラウザでの実行、セッションハイジャック、情報窃取)
- XSSの種類
- 反射型XSS (Reflected XSS) (URLパラメータ経由など)
- Persistent XSS) (データベース等に保存されたスクリプト)
- DOMベースXSS (DOM-based XSS) (クライアントサイドのDOM操作による)
[[XSS攻撃の具体例 (Cookie窃取、フィッシングサイトへの誘導)]]- XSS対策
- 出力時のエスケープ (コンテキストに応じた適切なエスケープ: HTML, JavaScript, CSS, URL) (最重要)
[[入力検証 (限定的効果、多層防御の一部)]][[Content Security Policy (CSP)]](詳細は後述)[[HttpOnly属性付きCookie]](JavaScriptからのCookieアクセス禁止)[[安全なJavaScriptコーディングプラクティス (innerHTMLよりtextContentなど)]][[WAFによる緩和]][[最新のフロントエンドフレームワークの利用 (デフォルトでエスケープされることが多い)]]
2.3. XSRF - Cross-Site Request Forgery) MOC (OWASP Top 10:2017 A8)
- CSRFの仕組みと影響 (ユーザーが意図しないリクエストを強制的に送信させる)
[[CSRF攻撃のシナリオ例 (パスワード変更、商品購入など)]]- CSRF対策
[[CSRFトークン (Synchronizer Token Pattern)]](最も一般的)[[SameSite Cookie属性 (Strict,Lax)]][[リファラヘッダの検証 (限定的効果)]][[カスタムヘッダの利用]][[重要な操作における再認証]]
2.4. 認証の不備 (Broken Authentication) MOC (OWASP Top 10:2021 A07)
[[脆弱なパスワードポリシー]][[安全でないパスワードリセット機能]][[セッション管理の不備]](詳細はセッション管理セキュリティで)[[クレデンシャルスタッフィング (Credential Stuffing) 攻撃]][[ブルートフォース攻撃 (Brute-force Attack) / 辞書攻撃 (Dictionary Attack)]][[多要素認証 (MFA) の未導入または不適切な実装]][[APIキーやトークンの不適切な管理]]- 対策 (パスワードセキュリティ強化, MFA導入, セキュアなセッション管理, 攻撃検知と防御)
2.5. アクセス制御の不備 (Broken Access Control) MOC (OWASP Top 10:2021 A01)
- アクセス制御の不備の種類
- 不安全な直接オブジェクト参照 (IDOR - Insecure Direct Object References) (パラメータ改ざんによる他ユーザーデータへのアクセス)
- 不備 (URL直接アクセスによる管理者機能実行など)
- 特権昇格 (Privilege Escalation)
- CORS設定ミスによる情報漏洩
[[攻撃例 (URLやパラメータの改ざん)]]- 対策 (デフォルト拒否, 最小権限の原則, 機能ごとのアクセス制御, オブジェクトレベルのアクセス制御, 信頼できない入力の検証)
2.6. セキュリティ設定ミス (Security Misconfiguration) MOC (OWASP Top 10:2021 A05)
[[デフォルト設定のまま運用 (デフォルトパスワード、サンプルアプリの残存など)]][[不要な機能やサービスの有効化]][[過度に詳細なエラーメッセージの表示]][[クラウドサービスのセキュリティ設定ミス (S3バケット公開など)]][[セキュリティヘッダの未設定または不適切な設定]][[ソフトウェアやフレームワークのバージョン管理不備 (パッチ未適用)]]- 対策 (セキュアなデフォルト設定, 定期的な設定レビュー, 自動化された設定管理, パッチ適用)
2.7. 機密データの公開 (Sensitive Data Exposure) MOC (OWASP Top 10:2017 A3, 2021 A02:暗号化の失敗)
[[平文でのパスワードや個人情報の保存・転送]][[脆弱な暗号アルゴリズムの使用]][[不適切な鍵管理]][[HTTPS未使用または不完全な実装 (混合コンテンツ)]][[キャッシュされる機密情報]][[ログに残る機密情報]]- 対策 (強力な暗号化, HTTPS強制, トークン化, データマスキング, 最小限のデータ保持, 定期的なデータレビュー)
2.8. 安全でないデシリアライゼーション (Insecure Deserialization) MOC (OWASP Top 10:2017 A8, 2021 A08:ソフトウェアとデータの完全性の不備)
[[デシリアライゼーションの仕組みとリスク (任意のコード実行の可能性)]][[攻撃例 (細工されたシリアライズドオブジェクトの送信)]]- 対策 (信頼できないソースからのデータのデシリアライズを避ける, 整合性チェック, 型検証, 安全なライブラリ利用)
2.9. 脆弱性のあるコンポーネントの使用 (Using Components with Known Vulnerabilities) MOC (OWASP Top 10:2021 A06)
[[サードパーティライブラリ、フレームワーク、OSコンポーネントの脆弱性]][[脆弱性データベース (CVE, NVD)]]- 対策 (ソフトウェアコンポジション解析(SCA)ツールの利用, 定期的な依存関係スキャンと更新, 不要なコンポーネントの削除)
2.10. 不十分なロギングとモニタリング (Insufficient Logging & Monitoring) MOC (OWASP Top 10:2021 A09)
[[攻撃の検知、フォレンジック調査、インシデント対応の妨げ]][[何をログに記録すべきか (認証試行, アクセス制御エラー, 入力検証エラー, サーバエラー)]][[ログの保護と一元管理]][[効果的な監視とアラート体制]]- 対策 (適切なロギングレベル, 構造化ロギング, 集中ログ管理, リアルタイム監視とアラート)
2.11. サーバーサイドリクエストフォージェリ (SSRF - Server-Side Request Forgery) MOC (OWASP Top 10:2021 A10)
[[SSRFの仕組みと影響 (内部ネットワークへのアクセス、機密情報窃取)]][[SSRF攻撃の例 (URLパラメータ経由での内部リソースアクセス)]]- 対策 (入力URLの厳格な検証とホワイトリスト方式, ネットワーク分離, 最小権限の原則)
2.12. リダイレクトとフォワードの不備 (Unvalidated Redirects and Forwards) MOC
[[オープンリダイレクトの危険性 (フィッシングサイトへの誘導)]][[対策 (リダイレクト先のホワイトリスト検証, ユーザーへの警告)]]
2.13. UI Redressing) MOC
[[クリックジャッキングの仕組み (透明なiframeによるユーザー操作の乗っ取り)]]- [[対策 (
X-Frame-Optionsヘッダ, CSPのframe-ancestorsディレクティブ)]]
2.14. ファイルアップロード脆弱性 MOC
[[危険なファイルタイプ (実行ファイル、スクリプト) のアップロード許可]][[ファイル名や拡張子の検証不備]][[アップロードされたファイルの不適切な配置場所とアクセス権限]][[コンテンツタイプの検証不備 (MIMEスニッフィング悪用)]][[対策 (ホワイトリスト形式でのファイルタイプ検証, ファイル名無害化, 非公開ディレクトリへの保存, ウイルススキャン)]]
2.15. Path Traversal) MOC
[[ディレクトリトラバーサルの仕組み (../などを用いた不正なファイルアクセス)]][[対策 (ユーザー入力の正規化と検証, 絶対パスの使用, chroot環境)]]
2.16. ビジネスロジックの脆弱性 MOC
[[アプリケーション固有のロジックの欠陥を悪用する攻撃]][[例 (価格改ざん、不正なワークフロー操作、過度なクーポン利用)]][[対策 (徹底したユースケース分析と異常系のテスト、ドメイン知識の活用)]]
3. セキュアコーディングプラクティス MOC (再掲・集約)
- 入力検証 (Input Validation) の徹底 (ホワイトリスト、データ型、長さ、フォーマット)
- エスケープの徹底 (コンテキストに応じた)
- プリペアドステートメントの使用 (SQLi対策)
- 最小権限の原則の実装
- 信頼できないデータの無害化 (Sanitization)
- セキュアなエラーハンドリング (情報漏洩防止)
- セキュアなファイル処理 (アップロード、ダウンロード、アクセス)
- セキュアなリダイレクトとフォワードの実装
- 依存関係の脆弱性管理 (定期的なスキャンとアップデート)
- コード内のハードコードされた機密情報の排除 (シークレット管理ツールの利用)
- 言語・フレームワーク固有のセキュリティ機能の活用
4. Web認証と認可のセキュリティ MOC (再掲・集約)
4.1. パスワードセキュリティ強化 MOC
[[安全なハッシュ化アルゴリズム (bcrypt, scrypt, Argon2, PBKDF2)]][[ソルト (Salt) の適切な使用]][[ストレッチング (Stretching) / キー派生関数の反復回数]][[パスワードポリシーの設定 (長さ、複雑性、定期変更の是非)]][[パスワード漏洩チェックサービスとの連携 (Have I Been Pwned)]][[パスワードマネージャーの推奨]]
4.2. セッション管理のセキュリティ強化 MOC
[[セキュアなCookie属性 (HttpOnly,Secure,SameSite=Strict/Lax)]][[セッショントークンの十分なランダム性と長さ]][[セッションタイムアウト (アイドルタイムアウト、絶対タイムアウト)]][[ログイン時のセッションID再生成 (セッション固定化対策)]][[ログアウト時の確実なセッション無効化]][[ユーザーエージェントやIPアドレスの変動監視 (オプション)]]
4.3. トークンベース認証 (JWTなど) のセキュリティ強化 MOC
[[JWTの署名アルゴリズムの選択 (HS256vs.RS256など)]][[秘密鍵/公開鍵の安全な管理]][[algヘッダのnone脆弱性対策]][[JWTの有効期限 (exp) の適切な設定]][[JWTの失効メカニズム (ブラックリスト方式、短命トークン+リフレッシュトークン)]][[JWTのペイロードに含める情報の吟味 (機密情報を含めない)]][[JWTのストレージ (localStorage vs. sessionStorage vs. Cookie)]]
4.4. 多要素認証 (MFA) の実装 MOC
[[MFAの種類 (TOTP, SMS/電話, プッシュ通知, セキュリティキー - FIDO/WebAuthn)]][[MFA導入のベストプラクティスとユーザビリティ]][[リカバリーコードの実装]]
4.5. OpenID Connect (OIDC) のセキュリティ実践 MOC
[[リダイレクトURIの厳格な検証]][[stateパラメータによるCSRF対策]][[PKCE (Proof Key for Code Exchange) の利用 (特にパブリッククライアント)]][[Implicitフローの非推奨とAuthorization Codeフロー with PKCEへの移行]][[アクセストークンのスコープ最小化]][[トークン漏洩対策]]
4.6. アクセス制御 (認可) の設計と実装 MOC
[[RBAC, ABACなどのモデルの適切な選択と実装]][[機能レベルとデータレベルのアクセス制御]][[デフォルト拒否の原則]][[アクセス制御ルールの集中管理とテスト]]
5. HTTPSと暗号化通信 MOC (再掲・詳細)
- SSLプロトコルの仕組み MOC
[[TLSハンドシェイクプロセス]][[暗号スイート (Cipher Suite) の選択]](前方秘匿性 - PFS)[[サーバー証明書とクライアント証明書 (オプション)]]
- デジタル証明書と認証局 (CA) MOC
[[証明書の階層構造と信頼の連鎖]][[証明書の種類 (DV, OV, EV)]][[証明書の有効期限と失効 (CRL, OCSP, OCSP Stapling)]][[Let's Encryptなどの無料CAの利用]]
- HSTS (HTTP Strict Transport Security) ヘッダ MOC (
Strict-Transport-Security)[[HSTSプリロードリスト]]
- 混合コンテンツ (Mixed Content) の防止と修正
- CookieのSecure属性 (HTTPS経由のみ送信)
- (オプション) HPKP (HTTP Public Key Pinning) - 非推奨
- (オプション) Certificate Transparency (CT)
6. ブラウザセキュリティメカニズム MOC (再掲・詳細)
- 同一生成元ポリシー (SOP - Same-Origin Policy) MOC
[[オリジン (プロトコル, ホスト, ポート) の定義]][[SOPによる制限 (Cookie, DOM, XMLHttpRequest/Fetch)]]
- CORS (Cross-Origin Resource Sharing) MOC
[[オリジン間リソース共有の仕組み (プリフライトリクエスト - OPTIONS)]][[サーバーサイドでのCORSヘッダ設定 (Access-Control-Allow-Originなど)]][[CORSのセキュリティリスクと適切な設定]]
- Content Security Policy (CSP) MOC
[[CSPの目的 (XSS, データインジェクションなどの軽減)]][[CSPディレクティブ (default-src,script-src,style-src,img-src,connect-src,frame-ancestorsなど)]][[unsafe-inline,unsafe-evalの回避]][[nonce, hashの利用]][[report-uri/report-toディレクティブによる違反報告]]
- その他のセキュリティ関連HTTPヘッダ
[[X-Frame-Options]](クリックジャッキング対策 -DENY,SAMEORIGIN,ALLOW-FROM)[[X-Content-Type-Options: nosniff]](MIMEスニッフィング攻撃対策)[[Referrer-Policy]](リファラ情報の制御)[[Permissions-Policy (旧 Feature-Policy)]](ブラウザ機能の利用許可制御)[[Strict-Transport-Security (HSTS)]](再掲)
- Subresource Integrity (SRI) MOC (CDNなど外部リソースの改ざん検知)
- HTML5セキュリティ機能
[[sandbox属性]][[rel=“noopener noreferrer”]](リンクからの情報漏洩対策)
7. Webセキュリティテストと監視 MOC
- セキュリティテストの種類 (再掲・集約)
[[静的アプリケーションセキュリティテスト (SAST)]](ソースコードスキャン)[[動的アプリケーションセキュリティテスト (DAST)]](実行中のアプリケーションへのテスト)[[インタラクティブアプリケーションセキュリティテスト (IAST)]](SASTとDASTの組み合わせ)[[ソフトウェアコンポジション解析 (SCA)]](依存ライブラリの脆弱性スキャン)[[手動ペネトレーションテスト]][[セキュリティコードレビュー]]
- 脆弱性診断ツール
[[OWASP ZAP (Zed Attack Proxy)]][[Burp Suite]][[Nmap (ポートスキャン)]][[Nikto, SkipfishなどのWebスキャナ]][[SQLMap (SQLiテスト)]][[各種SAST/DAST/SCAツール (SonarQube, Veracode, Snyk, Trivyなど)]]
- セキュリティ監視とインシデント対応
[[WAF (Web Application Firewall) のログ監視]][[IDS/IPS (Intrusion Detection/Prevention System) のログ監視]][[SIEM (Security Information and Event Management) の活用]][[インシデントレスポンス計画 (IRP) の準備]][[フォレンジック調査の基本]]
- バグバウンティプログラムと責任ある開示 (Responsible Disclosure)
8. DevSecOpsとシフトレフトセキュリティ MOC
- DevSecOpsの定義と文化 (開発、セキュリティ、運用の連携)
- シフトレフトの概念 (セキュリティ活動を開発ライフサイクルの早期に)
- CI/CDパイプラインへのセキュリティテストの統合
[[コミット時のSASTスキャン]][[ビルド時のSCAスキャン]][[テスト環境へのデプロイ後のDASTスキャン]][[コンテナイメージスキャン]][[IaCセキュリティスキャン]]
- セキュリティ自動化のツールとプラクティス
- セキュリティチャンピオン制度と開発者教育
9. Webセキュリティの最新トレンドと将来展望 MOC
- 機械学習によるセキュリティ攻撃と防御
- WebAssembly (Wasm) のセキュリティ課題と可能性
- 3 と QUIC のセキュリティ側面
- プライバシー保護技術 (PETs) とWeb (差分プライバシー、準同型暗号など - 概要)
- サプライチェーンセキュリティ (Software Supply Chain Security) (SLSAフレームワークなど)
- ゼロトラストアーキテクチャとWebアプリケーション
- パスワードレス認証の普及 (WebAuthn, FIDO2)
- 量子コンピュータ耐性暗号 (Post-Quantum Cryptography - PQC) のWebへの影響 (将来)
10. Webセキュリティアンチパターン MOC
[[全ての入力を信頼する]][[エラーメッセージで詳細な内部情報を漏洩する]][[ハードコードされた認証情報]][[脆弱なデフォルト設定のまま運用する]][[HTTPSを使用しない、または不完全に設定する]][[既知の脆弱性のあるライブラリを使い続ける]][[セキュリティテストを軽視する、または実施しない]][[ログを適切に収集・監視しない]][[セキュリティは専門家の仕事だと開発者が考えない]][[インシデント発生時の対応計画がない]]