HttpSessionState.IsCookieless Proprietà

Definizione

Ottiene un valore che indica se l'ID della sessione è incorporato nell'URL o memorizzato in un cookie HTTP.

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

Valore della proprietà

Boolean

true se la sessione è incorporata nell'URL, altrimenti false.

Esempio

Nell'esempio di codice seguente l'attributo cookieless di sessione viene impostato su true nel file Web.config.

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

Commenti

ASP.NET identifica le sessioni in modo univoco con ogni browser. Per impostazione predefinita, l'identificatore univoco per una sessione viene archiviato in un cookie di sessione non scaduto nel browser. È possibile specificare che gli identificatori di sessione non devono essere archiviati in un cookie impostando l'attributo cookieless su true nell'elemento di configurazione sessionState .

Nota

Per migliorare la sicurezza dell'applicazione, l'applicazione deve consentire agli utenti di disconnettersi, a quel punto deve chiamare il Abandon metodo . In questo modo si riduce il rischio che un'origine indesiderata usi l'identificatore univoco nell'URL per recuperare i dati privati archiviati nella sessione per un utente.

ASP.NET mantiene lo stato della sessione senza cookie inserendo automaticamente un ID sessione univoco nell'URL della pagina. Ad esempio, l'URL seguente è stato modificato da ASP.NET per includere l'ID sessione univoco lit3py55t21z5v55vlm25s55:

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

ASP.NET modifica i collegamenti contenuti in tutte le pagine richieste incorporando un valore id sessione nei collegamenti appena prima di inviare ogni pagina al browser. Lo stato della sessione viene mantenuto finché l'utente segue il percorso dei collegamenti forniti dal sito. Tuttavia, se l'agente utente riscrive un URL, l'istanza dello stato sessione andrà persa.

L'ID sessione viene incorporato nell'URL dopo la barra che segue il nome dell'applicazione e prima di qualsiasi file o identificatore di directory virtuale rimanente. In questo modo ASP.NET risolvere il nome dell'applicazione prima di coinvolgere nella SessionStateModule richiesta.

Per impostazione predefinita, gli identificatori di sessione usati nelle sessioni senza cookie vengono riciclati. Ovvero, se viene effettuata una richiesta con un ID sessione scaduto, viene avviata una nuova sessione usando l'ID sessione fornito con la richiesta. Questo comportamento può causare la condivisione indesiderata dei dati di sessione quando un collegamento che contiene un ID sessione senza cookie viene condiviso con più browser, ad esempio tramite un motore di ricerca o un altro programma. È possibile ridurre la possibilità di condividere i dati della sessione da più client disabilitando il riciclo degli identificatori di sessione. A tale scopo, impostare l'attributo dell'elemento regenerateExpiredSessionId di configurazione sessionState su true. Ciò comporterà la generazione di un nuovo ID di sessione quando viene effettuata una richiesta di sessione senza cookie con un ID sessione scaduto. Si noti che se la richiesta effettuata con l'ID sessione scaduta usa il metodo HTTPPOST, tutti i dati pubblicati andranno persi quando regenerateExpiredSessionId è true, come ASP.NET esegue un reindirizzamento per assicurarsi che nel browser sia presente il nuovo identificatore di sessione nell'URL.

Nota

Mentre l'impostazione dell'attributo regenerateExpiredSessionId per true ridurre la possibilità di condivisione indesiderata dei dati di sessione, non protegge da un'origine indesiderata che ottiene l'accesso alla sessione di un altro utente ottenendo il SessionID valore e includendolo nelle richieste al server. Se si archiviano informazioni private o riservate nello stato della sessione, è consigliabile usare SSL per crittografare qualsiasi comunicazione tra il browser e il server che include .SessionID

Si applica a

Vedi anche