Session cheatsheet
Session_Management_Cheat_Sheet
セッション管理チートシート(翻訳しただけ)
導入
Web認証、セッション管理、アクセス制御
Webセッションとは、同じユーザーに関連付けられたネットワークHTTP要求と応答のトランザクションのシーケンスです。
最新の複雑なWebアプリケーションでは、複数の要求が続く間、各ユーザーに関する情報やステータスを保持する必要があります。そのため、セッションでは、アクセス権やローカリゼーション設定などの変数を確立する機能が提供されます。これらの変数は、セッションの期間中、ユーザーがWebアプリケーションと行うすべてのやり取りに適用されます。
Webアプリケーションは、最初のユーザー リクエストの後に匿名ユーザーを追跡するためのセッションを作成できます。たとえば、ユーザーの言語設定を維持する場合などです。さらに、Webアプリケーションは、ユーザーが認証されるとセッションを使用します。これにより、後続のリクエストでユーザーを識別できるだけでなく、セキュリティ アクセス制御、ユーザーのプライベート データへの承認済みアクセスを適用し、アプリケーションの使いやすさを向上させることができます。したがって、現在のWebアプリケーションは、認証前と認証後の両方でセッシ ョン機能を提供できます。
認証されたセッションが確立されると、セッションID (またはトークン) は、ユーザー名とパスワード、パスフレーズ、ワンタイム パスワード (OTP)、クライアント ベースのデジタル証明書、スマート カード、または生体認証 (指紋や目の網膜など) など、アプリケーションで使用される最も強力な認証方法と一時的に同等になります。OWASP認証チート シートを参照してください。
HTTPはステートレス プロトコル ( RFC2616セクション5) であり、各リクエストとレスポンスのペアは他のWebのやり取りから独立しています。したがって、セッションの概念を導入するには、Webアプリケーションで一般的に使用できる認証モジュールとアクセス制御 (または承認) モジュールの両方をリンクするセッション管理機能を実装する必要があります。
セッションダイアグラム
セッションIDまたはトークンは、ユーザー認証資格情報 (ユーザー セッションの形式) を、ユーザー HTTPトラフィックおよびWebアプリケーションによって適用される適切なアクセス制御にバインドします。最新のWebアプリケーションにおけるこれら3つのコンポーネント (認証、セッション管理、アクセス制御) の複雑さ、および実装とバインドがWeb開発者の手に委ねられているという事実 (Web開発フレームワークはこれらのモジュール間の厳密な関係を提供しない ため) により、安全なセッション管理モジュールの実装は非常に困難になっています。
セッションIDの開示、キャプチャ、予測、ブルート フォース、または固定は、セッション ハイジャック (またはサイドジャック) 攻撃につながり、攻撃者はWebアプリケーションで被害者のユーザーを完全に偽装できます。攻撃者は、標的型と汎用型の2種類のセッション ハイジャック攻撃を実行できます。標的型攻撃の場合、攻撃者の目的は、特定の (または特権を持つ) Webアプリケーションの被害者のユーザーになりすますことです。汎用攻撃の場合、攻撃者の目的は、Webアプリケーションで任意の有効または正当なユーザーになりすます (またはアクセスする) ことです。
セッションIDプロパティ
認証された状態を維持し、Webアプリケーション内でのユーザーの進行状況を追跡するために、アプリケーションは、セッション作成時に割り当てられ、セッション期間中にユーザーとWebアプリケーションによって共有および交換されるセッション識別子(セッションIDまたはトークン) をユーザーに提供します (セッションIDは、すべてのHTTP要求で送信されます)。セッションIDはペアですname=value。
安全なセッションIDを実装するためには、識別子 (IDまたはトークン) の生成が次のプロパティを満たす必要があります。
セッションID名のフィンガープリンティング¶ セッションIDで使用される名前は、過度に説明的なものや、IDの目的や意味について不必要な詳細を提供するものであってはなりません。
最も一般的なWebアプリケーション開発フレームワークで使用されるセッションID名は、(PHP)、(J2EE)、( ColdFusion )、 (ASP .NET)など、簡単にフィンガープリントできます。したがって、セッションID名から、Webアプリケーションで使用されるテクノロジとプログラミング言語が明らかになる可能性があります。PHPSESSIDJSESSIONIDCFIDCFTOKENASP.NET_SessionId
Web開発フレームワークのデフォルトのセッションID名を、 などの一般的な名前に変更することをお勧めしますid。
セッションIDの長さ
セッションIDは、ブルート フォース攻撃 (攻撃者がID値の全範囲を調べて有効なセッションの存在を確認できる) を防ぐのに十分な長さである必要があります。
セッションIDの長さは少なくともである必要があります128 bits (16 bytes)。
注記:
128ビットのセッションIDの長さは、次のセクション「セッションIDエントロピー」で行われた仮定に基づいて参考として提供されています。ただし、他の実装要因がその強度に影響を与える可能性があるため、この数値は絶対的な最小値として考慮されるべきではありません。 たとえば、Microsoft ASP.NETセッションIDなどのよく知られた実装があります。「ASP .NETセッションIDは、aからzまでの小文字と0から5までの数字で構成される24文字の文字列にエンコードされた、ランダムに生成された数値です。」 非常に優れた有効エントロピーを提供できるため、推測やブルート フォース攻撃を回避するのに十分な長さであると考えられます。 セッションIDエントロピー¶ 攻撃者が統計分析技術を使用して有効なセッションのIDを推測または予測できる推測攻撃を防ぐために、セッションIDは予測不可能 (十分にランダム) である必要があります。この目的のために、優れたCSPRNG (暗号的に安全な疑似乱数ジェネレーター) を使用する必要があります。
セッションID値は少なくとも64 bitsエントロピーを提供する必要があります (適切なPRNGが使用されている場合、この値はセッションIDの長さの半分になると推定されます)。
さらに、ランダムなセッションIDだけでは不十分です。重複したIDを避けるために、セッションIDは一意である必要があります。ランダムなセッションIDは、現在のセッションIDスペースに既に存在してはなりません。
注記:
セッションIDエントロピーは、Webアプリケーションに一般的に存在する同時アクティブ セッションの数、絶対セッション有効期限のタイムアウト、攻撃者が1秒あたりに実行できるセッションID推測の数、およびターゲットWebアプリケーションがサポートできるセッションID推測の数など、他の外部の測定が難しい要因によって実際に影響を受けます。 エントロピーが のセッションID64 bitsが使用される場合、Webアプリケーションで100,000の有効な同時セッションが利用可能で、攻撃者が1秒あたり10,000回の推測を試みることができると仮定すると、攻撃者は有効なセッションIDを推測するのに292年以上かかることが予想されます。 詳細はここをご覧ください。 セッションIDの内容 (または値)¶ 情報漏洩攻撃を防ぐために、セッションIDの内容 (または値) は無意味である必要があります。情報漏洩攻撃では、攻撃者がIDの内容をデコードし、ユーザー、セッション、またはWebアプリケーションの内部動作の詳細を抽出できます。
セッションIDはクライアント側の単なる識別子である必要があり、その値には機密情報や個人を特定できる情報 (PII) を含めることはできません。PIIの詳細については、Wikipediaまたはこの投稿を参照してください。
セッションIDに関連付けられた意味とビジネス ロジックまたはアプリケーション ロジックは、サーバー側、具体的にはセッション オブジェクトまたはセッション管理データベースまたはリポジトリに保存する必要があります。
保存される情報には、クライアントIPアドレス、ユーザー エージェント、電子メール、ユーザー名、ユーザー ID、ロール、権限レベル、アクセス権、言語設定、アカウントID、現在の状態、最終ログイン、セッション タイムアウト、その他の内部セッションの詳細が含まれます。セッション オブジェクトとプロパティにクレジットカード番号などの機密情報が含まれている場合は、セッション管理リポジトリを適切に暗号化して保護する必要があります。
言語またはフレームワークによって作成されたセッションIDを使用することをお勧めします。独自のセッションIDを作成する必要がある場合は、少なくとも128ビットのサイズの暗号的に安全な疑似乱数ジェネレーター (CSPRNG) を使用して、各セッションIDが一意であることを確認してください。
セッション管理の実装¶ セッション管理の実装は、ユーザーとWebアプリケーションの間でセッションIDを共有し、継続的に交換するために使用される交換メカニズムを定義します。Webアプリケーション内でセッション状態を維持するために、HTTPには、Cookie (標準HTTPヘッダー)、URLパラメーター (URL書き換え - RFC2396 )、GET要求のURL引数、POST要求の本文引数 (隠しフォーム フィールド (HTMLフォーム) など)、独自のHTTPヘッダーなど、複数のメカニズムが用意されています。
推奨されるセッションID交換メカニズムでは、トークンの有効期限や時刻、細かい使用制限などの高度なトークン プロパティを定義できる必要があります。これが、Cookie (RFC 2109、2965、6265) が最も広く使用されているセッションID交換メカニズムの1つであり、他の方法では利用できない高度な機能を提供する理由の1つです。
IDがURLに含まれているような特定のセッションID交換メカニズムを使用すると、セッションIDが (Webリンクやログ、Webブラウザーの履歴やブックマーク、Refererヘッダー、検索エンジンなどで) 公開される可能性があり、また、IDの操作やセッション固定攻撃などの他の攻撃も容易になる可能性があります。
組み込みセッション管理実装¶ J2EE、ASP .NET、PHPなどのWeb開発フレームワークは、独自のセッション管理機能と関連する実装を提供します。これらの組み込みフレームワークは世界中の複数のWeb環境で使用されており、Webアプリケーションのセキュリティおよび開発コミュニティによって長年にわたってテストされているため、自作のフレームワークをゼロから構築するのではなく、これらの組み込みフレームワークを使用することをお勧めします。
ただし、これらのフレームワークは過去に脆弱性や弱点も抱えていることに留意してください。そのため、既知の脆弱性がすべて修正されている可能性のある最新バージョンを常に使用し、このドキュメントに記載されている推奨事項に従ってデフォルト構成を確認して変更し、セキュリティを強化することをお勧めします。
セッションIDを一時的に保存するためにセッション管理メカニズムによって使用されるストレージ機能またはリポジトリは、ローカルまたはリモートでの偶発的な漏洩や不正アクセスからセッションIDを保護するために安全である必要があります。
使用されるセッションID交換メカニズムと受け入れられるセッションID交換メカニズム¶ Webアプリケーションは、セッションID交換管理にCookieを使用する必要があります。ユーザーがURLパラメータなどの別の交換メカニズムを使用してセッションIDを送信した場合、Webアプリケーションはセッション固定を阻止する防御戦略の一環として、そのIDを受け入れないようにする必要があります。
注記:
WebアプリケーションがデフォルトのセッションID交換メカニズムとしてCookieを使用する場合でも、他の交換メカニズムも受け入れる場合があります。 したがって、セッションIDを処理および管理する際に、Webアプリケーションが現在受け入れているさまざまなメカニズムをすべて徹底的にテストして確認し、受け入れられるセッションID追跡メカニズムをCookieだけに制限する必要があります。 過去には、一部のWebアプリケーションでは、特定の条件 ( たとえば、CookieをサポートしていないWebクライアントの識別や、ユーザーのプライバシーに関する懸念からCookieを受け入れないなど) が満たされた場合、URLパラメータを使用したり、CookieからURLパラメータに切り替えたり (自動URL書き換えによって) していました。 トランスポート層セキュリティ¶ ネットワーク トラフィックでの能動的な盗聴や受動的な漏洩からセッションID交換を保護するには、ユーザー資格情報が交換される認証プロセスだけでなく、Webセッション全体で暗号化されたHTTPS (TLS) 接続を使用することが不可欠です。これは、クライアントがサポートしているHTTP Strict Transport Security (HSTS)によって軽減される可能性があります。
さらに、セッションIDが暗号化されたチャネルを通じてのみ交換されるようにするには、 Secure Cookie属性を使用する必要があります。暗号化された通信チャネルを使用すると、攻撃者がWebトラフィックを傍受して操作し、被害者のWebブラウザにセッションIDを挿入 (または修正) するセッション固定攻撃からセッションを保護することもできます (こちらとこちらを参照)。
次のベスト プラクティス セットは、セッションID (特にCookieが使用される場合) を保護し、Webアプリケーション内でのHTTPSの統合を支援することに重点を置いています。
特定のセッションをHTTPからHTTPSに、またはその逆に切り替えないでください。切り替えると、セッションIDがネットワークを通じて暗号化されずに公開されます。 HTTPSにリダイレクトする場合は、リダイレクトが発生した後にCookieが設定または再生成されることを確認します。 同じページ内または同じドメイン内の暗号化さ れたコンテンツと暗号化されていないコンテンツ (HTMLページ、画像、CSS、JavaScriptファイルなど) を混在させないでください。 可能であれば、同じホストから暗号化されていない公開コンテンツと暗号化された非公開コンテンツを提供することは避けてください。安全でないコンテンツが必要な場合は、別の安全でないドメインでホストすることを検討してください。 HTTPS接続を強制するには、HTTP Strict Transport Security (HSTS)を実装します。 TLSを安全に実装するためのより一般的なガイダンスについては、OWASP Transport Layer Security Cheat Sheetを参照してください。
TLSはセッションIDの予測、ブルート フォース、クライアント側の改ざんや固定に対しては保護を提供しないことを強調しておくことが重要です。ただし、中間者攻撃によってセッションIDを傍受または盗用する攻撃者に対しては効果的な保護を提供します。
クッキー¶ クッキーに基づくセッションID交換メカニズムは、セッションIDの交換を保護するために使用できるクッキー属性の形式で複数のセキュリティ機能を提供します。
セキュア属性¶ CookieSecure属性は、Webブラウザに、暗号化されたHTTPS (SSL/TLS) 接続を介してのみCookieを送信するように指示します。このセッション保護メカニズムは、MitM (中間者) 攻撃によるセッションIDの漏洩を防ぐために必須です。これにより、攻撃者がWebブラウザのトラフィックからセッションIDを簡単に取得できなくなります。
Webアプリケーションが通信にHTTPSのみを使用するように強制しても (Webアプリケーション ホストでポートTCP/80、HTTPが閉じられている場合でも)、CookieがSecure設定されていない場合はセッ ションIDの漏洩を防ぐことはできません。Webブラウザは、暗号化されていないHTTP接続を介してセッションIDを漏洩するように騙される可能性があります。攻撃者は、被害者のユーザー トラフィックを傍受して操作し、Webアプリケーションへの暗号化されていないHTTP参照を挿入して、WebブラウザにセッションIDを平文で送信させるように強制できます。
参照: SecureFlag
HttpOnly属性¶ cookieHttpOnly属性は、Webブラウザに、スクリプト (JavaScriptやVBscriptなど) がDOM document.cookieオブジェクトを介してcookieにアクセスできないように指示します。このセッションID保護は、XSS攻撃によるセッションIDの盗難を防ぐために必須です。ただし、XSS攻撃がCSRF攻撃と組み合わされた場合、ブラウザはリクエストの送信時に常にcookieを含めるため、Webアプリケーションに送信されるリクエストにはセッションcookieが含まれます。cookieはHttpOnlycookieの機密性のみを保護します。攻撃者は、XSS攻撃のコンテキスト外で、cookieをオフラインで使用することはできません。
OWASP XSS (クロスサイトスクリプティング) 防止チートシートを参照してください。
参照: HttpOnly
SameSite属性¶ SameSiteは、ブラウザがクロスサイト リクエストでSameSiteフラグ付きCookieを送信するのを防ぐCookie属性を定義します。主な目的は、クロスオリジン情報漏洩のリスクを軽減し、クロスサイト リクエスト フォージェリ攻撃に対する保護を提供することです。
参照: SameSite
ドメインとパス属性¶ cookieDomain属性は、 Webブラウザに、指定されたドメインとすべてのサブドメインにのみcookieを送信するように指示します。属性が設定されていない場合、 デフォルトではcookieはオリジン サーバーにのみ送信されます。cookiePath属性は、 Webブラウザに、Webアプリケーション内の指定されたディレクトリまたはサブディレクトリ (またはパスまたはリソース) にのみcookieを送信するように指示します。属性が設定されていない場合、デフォルトではcookieは、要求されcookieが設定されているリソースのディレクトリ (またはパス) にのみ送信されます。
これら2つの属性には、狭い範囲または制限された範囲を使用することをお勧めします。この方法では、属性をDomain設定せず (Cookieを元のサーバーのみに制限)、PathセッションIDを使用するWebアプリケーション パスに属性を可能な限り制限して設定する必要があります。
Domain属性をなどの許容度が高すぎる値に設定すると、example.com攻撃者は同じドメインに属する異なるホストやWebアプリケーション間のセッションIDに対して攻撃を仕掛けることができます。これはクロスサブドメインCookieと呼ばれます。たとえば、 の脆弱性により、www.example.com攻撃者はからセッションIDにアクセスできる可能性がありますsecure.example.com。
さらに、同じドメイン上でセキュリティ レベルの異なるWebアプリケーションを混在させないことが推奨されます。いずれかのWebアプリケーションに脆弱性があると、攻撃者は、セッション固定攻撃で使用できる手法であるpermissive属性(Domainなどexample.com) を使用して、同じドメイン上の別のWebアプリケーションのセッションIDを設定できるようになります。
このPath属性により、同じホスト上の異なるパスを使用する異なるWebアプリケーション間でセッションIDを分離できますが、同じホスト上で異なるWebアプリケーション (特にセキュリティ レベルやスコープが異なるもの) を実行しないことを強くお勧めします。これらのアプリケーションは、オブジェクトなどの他の方法を使用してセッションIDにアクセスできますdocument.cookie。また、どのWebアプリケーションでも、そのホスト上の任意のパスにCookieを設定できます。
CookieはDNSスプーフィング/ハイジャック/ポイズニング攻撃に対して脆弱であり、攻撃者はDNS解決を操作して、Webブラウザに特定のホストまたはドメインのセッションIDを開示させることができます。
有効期限と最大有効期間の属性¶ クッキーに基づくセッション管理メカニズムでは、非永続的 (またはセッション) クッキーと永続的クッキーの2種類のクッキーを使用できます。クッキーがMax-Age( より優先されるExpires) またはExpires属性を提示する場合、そのクッキーは永続的クッキーとみなされ、有効期限までWebブラウザによってディスクに保存されます。
通常、認証後にユーザーを追跡するセッション管理機能では、非永続的なCookieが使用されます。これにより、現在のWebブラウザー インスタンスが閉じられると、クライアントからセッションが強制的に消えます。したがって、セッション管理の目的では非永続的なCookieを使用することを強くお勧めします。これにより、セッションIDがWebクライアント キャッシュに長期間残って攻撃者が取得するのを防ぐことができます。
機密情報が永続的に保存されないようにし、暗号化し、必要な期間のみ保存することで、機密情報が漏洩しないようにします。 クッキー操作による不正な活動が行われないようにする 安全でない方法で誤ってネットワーク経由で送信されないように、セキュアフラグが設定されていることを確認します。 アプリケーションコード内のすべての状態遷移が適切にクッキーをチェックし、その使用を強制しているかどうかを確認します。 機密データがクッキーに保存されている場合は、クッキー全体を暗号化する必要があります。 アプリケーションで使用されるすべてのCookie、その名前、および必要な理由を定義します。 HTML5ウェブストレージAPI¶ Webハイパーテキスト アプリケーション技術ワーキング グループ (WHATWG) は、クライアント側で名前と値のペアを保存するためのメカニズムとして、 HTML5 WebストレージAPIlocalStorageおよびについて説明しています。HTTPクッキーとは異なり、およびの内容は、ブラウザによる要求または応答内で自動的に共有されず、クライアント側でデータを保存するために使用されます。sessionStoragelocalStoragesessionStorage
ローカルストレージAPI¶ 範囲¶ APIを使用して保存されたデータはlocalStorage、同じオリジンから読み込まれたページからアクセスできます。オリジンは、スキーム ( https://)、ホスト ( example.com)、ポート ( 443)、およびドメイン/レルム ( ) として定義されます。これにより、Cookieのフラグをexample.com使用して実現されるのと同様のデータへのアクセスが提供されます。つまり、 から保存されたデータはを介 して取得できません。別のウィンドウ/スレッドからの同時アクセスの可能性があるため、 を使用して保存されたデータは共有アクセスの問題 (競合状態など) の影響を受けやすく、非ロックと見なす必要があります ( Web Storage API仕様)。securehttpshttplocalStorage
間隔¶ APIを使用して保存されたデータはlocalStorageブラウジング セッション全体にわたって保持され、他のシステム ユーザーがアクセスできる期間が延長されます。
オフラインアクセス¶ 標準ではlocalStorage保存時にデータを暗号化する必要がないため、ディスクからこのデータに直接アクセスできる可能性があります。
使用事例¶ WHATWGは、複数のウィンドウやタブ、複数のセッションにわたってアクセスする必要があるデータや、パフォーマンス上の理由から大容量 (数メガバイト) のデータを格納する必要がある場合にを使用することを提案してlocalStorageいます。
セッションストレージAPI¶ 範囲¶ APIsessionStorageは、呼び出し元のウィンドウ コンテキスト内にデータを保存します。つまり、タブ1はタブ2から保存されたデータにアクセスできません。また、APIと同様にlocalStorage、APIを使用して保存されたデータsessionStorageは、スキーム ( https://)、ホスト ( example.com)、ポート ( )、443およびドメイン/領域 ( ) として定義される同じオリジンから読み込まれたページからアクセスできます。これにより、Cookieの フラグexample.comを使用することによって実現されるのと同様のデータ アクセスが提供されます。つまり、 から保存されたデータはを介して取得できません。securehttpshttp
間隔¶ APIsessionStorageは、現在のブラウジング セッションの期間中 のみデータを保存します。タブが閉じられると、そのデータは取得できなくなります。ただし、ブラウザ タブを再利用したり開いたままにしたりしても、必ずしもアクセスが妨げられるわけではありません。また、ガベージ コレクション イベントが発生するまで、データがメモリ内に残ることもあります。
オフラインアクセス¶ 標準ではsessionStorage保存時にデータを暗号化する必要がないため、ディスクからこのデータに直接アクセスできる可能性があります。
使用事例¶ WHATWGは、チケット予約の詳細など、ワークフローの1つのインスタンスに関連するデータに対して、他のタブで複数のワークフローを同時に実行できる場合にを使用することを提案していますsessionStorage。ウィンドウ/タブにバインドされた性質により、別々のタブのワークフロー間でデータが漏洩することはありません。
参考文献¶ ウェブストレージAPI ローカルストレージAPI セッションストレージAPI WHATWG Webストレージ仕様 ウェブワーカー¶ Web Workersは、現在のウィンドウとは別のグローバル コンテキストでJavaScriptコードを実行します。メイン実行ウィンドウとの通信チャネルが存在し、これを と呼びますMessageChannel。
使用事例
Web Workersは、ページの更新後もストレージの永続性が要求されない場合に、ブラウザーに (セッション) シークレットを保存する代替手段です。Web Workersが安全なブラウザー ストレージを提供するには、シークレットを必要とするコードはすべてWeb Workers内に存在し、シークレットがメイン ウィンドウ コンテキストに送信されないようにする必要があります。
Web Workerのメモリ内にシークレットを保存すると、HttpOnly Cookieと同じセキュリティ保証が提供されます。つまり、シークレットの機密性が保護されます。ただし、XSS攻撃を使用してWeb Workerにメッセージを送信し、シークレットを必要とする操作を実行することは可能です。Web Workerは、操作の結果をメイン実行スレッドに返します。
HttpOnly Cookieと比較したWeb Worker実装の利点は、Web Workerでは分離されたJavaScriptコードがシークレットにアクセスできることです。一方、HttpOnly CookieはどのJavaScriptからもアクセスできません。フロントエンドのJavaScriptコードがシークレットにアクセスする必要がある場合、Web Worker実装はシークレットの機密性を保持する唯一のブラウザー ストレージ オプションです。
セッションIDのライフサイクル
セッションIDの生成と検証: 許容型と厳密型のセッション管理¶ セッション固定の脆弱性に関連するWebアプリケーションのセッション管理メカニズムには、許容型と厳密型の2種類があります。許容型メカニズムでは、Webアプリケーションは最初にユーザーが設定したセッションID値を有効として受け入れ、新しいセッションを作成できます。一方、厳密型メカニズムでは、Webアプリケーションが以前に生成したセッションID値のみを受け入れるように強制します。
セッション トークンは、可能な場合はWebサーバーによって処理されるか、暗号化された安全な乱数ジェネレータによって生成される必要があります。
現在使用されている最も一般的なメカニズムはstrict(より安全)ですが、PHPのデフォルトはpermissiveです。開発者は、特定の状況下でWebアプリケーションがpermissiveメカニズムを使用しないようにする必要があります。Webアプリケーションは、生成したことのないセッションIDを決して受け入れてはなりません。セッションIDを受け取った場合は、新しい有効なセッションIDを生成してユーザーに提供する必要があります。さらに、このシナリオは疑わしいアクティビティとして検出され、アラートが生成される必要があります。
セッションIDを他のユーザー入力と同様に管理する¶ セッションIDは、Webアプリケーションによって処理される他のユーザー入力と同様に信頼できないものとみなされ、徹底的に検証および確認される必要があります。使用されるセッション管理メカニズムに応じて、セッションIDはGETまたはPOSTパラメータ、URL、またはHTTPヘッダー (例: クッキー) で受信されます。Webアプリケーションが無効なセッションID値を処理前に検証およびフィルター処理しない場合、セッションIDがリレーショナル データベースに保存されている場合はSQLインジェクション、セッションIDがWebアプリケーションによって保存され、後で反映される場合は永続的なXSSなど、他のWebの脆弱性を悪用される可能性があります。