HttpSessionState.IsCookieless プロパティ

定義

セッション ID が URL に埋め込まれているか、HTTP Cookie に格納されているかを示す値を取得します。

public:
 property bool IsCookieless { bool get(); };
public bool IsCookieless { get; }
member this.IsCookieless : bool
Public ReadOnly Property IsCookieless As Boolean

プロパティ値

true セッションが URL に埋め込まれている場合。それ以外の場合は false

次のコード例では、Web.config ファイルで cookieless セッション属性を true に設定します。

<configuration>
  <system.web>
    <sessionState
      mode="InProc"
      cookieless="true"
      regenerateExpiredSessionId="true"
      timeout="30" />
  </system.web>
</configuration>

注釈

ASP.NET は、各ブラウザーでセッションを一意に識別します。 既定では、セッションの一意識別子は、期限切れでないセッション Cookie にブラウザーに格納されます。 セッション識別子を Cookie に格納しないように指定するには、cookieless属性を sessionState 構成要素のtrueに設定します。

Note

アプリケーションのセキュリティを向上させるには、アプリケーションでユーザーがログアウトできるようにし、その時点で Abandon メソッドを呼び出す必要があります。 これにより、URL の一意の識別子を使用して不要なソースが、ユーザーのセッションに格納されているプライベート データを取得する可能性が低下します。

ASP.NET は、ページの URL に一意のセッション ID を自動的に挿入することで、Cookie レスセッション状態を維持します。 たとえば、次の URL は、一意のセッション ID lit3py55t21z5v55vlm25s55 を含むように、ASP.NET によって変更されています。

http://www.example.com/(S(4danlfat035muve4g0mvgfrr))/orderform.aspx

ASP.NET は、各ページをブラウザーに送信する直前に、リンクにセッション ID 値を埋め込むことで、要求されたすべてのページに含まれるリンクを変更します。 ユーザーがサイトが提供するリンクのパスに従っている限り、セッション状態は維持されます。 ただし、ユーザー エージェントが URL を書き換える場合、セッション状態インスタンスは失われます。

セッション ID は、アプリケーション名の後のスラッシュの後、残りのファイルまたは仮想ディレクトリ識別子の前の URL に埋め込まれます。 これにより、ASP.NET は、SessionStateModuleを要求に含める前にアプリケーション名を解決できます。

既定では、Cookie レス セッションで使用されるセッション識別子はリサイクルされます。 つまり、有効期限が切れたセッション ID で要求が行われた場合、要求で指定されたセッション ID を使用して新しいセッションが開始されます。 この動作により、Cookie レス セッション ID を含むリンクが検索エンジンやその他のプログラムを介して複数のブラウザーと共有されている場合に、セッション データが不要に共有される可能性があります。 セッション識別子のリサイクルを無効にすることで、セッション データが複数のクライアントによって共有される可能性を減らすことができます。 これを行うには、sessionState 構成要素のregenerateExpiredSessionId属性を true に設定します。 これにより、有効期限が切れたセッション ID で Cookie レス セッション要求が行われると、新しいセッション ID が生成されます。 期限切れのセッション ID で行われた要求で HTTP POST メソッドが使用されている場合、regenerateExpiredSessionIdtrue のときにポストされたデータは失われることに注意してください。ASP.NET はリダイレクトを実行して、ブラウザーが URL に新しいセッション識別子を持っていることを確認します。

Note

regenerateExpiredSessionId属性を true に設定すると、セッション データの不要な共有の可能性が減少しますが、SessionID値を取得してサーバーへの要求に含めることで、不要なソースが別のユーザーのセッションにアクセスするのを防ぎません。 プライベートまたは機密情報をセッション状態で格納する場合は、SSL を使用して、 SessionIDを含むブラウザーとサーバー間の通信を暗号化することをお勧めします。

適用対象

こちらもご覧ください