HttpSessionState.IsCookieless Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém um valor que indica se a ID de sessão é inserida na URL ou armazenada em um cookie HTTP.
public:
property bool IsCookieless { bool get(); };
public bool IsCookieless { get; }
member this.IsCookieless : bool
Public ReadOnly Property IsCookieless As Boolean
Valor da propriedade
true
se a sessão for inserida na URL. Caso contrário, false
.
Exemplos
O exemplo de código a seguir define o cookieless
atributo de sessão como true no arquivo Web.config.
<configuration>
<system.web>
<sessionState
mode="InProc"
cookieless="true"
regenerateExpiredSessionId="true"
timeout="30" />
</system.web>
</configuration>
Comentários
ASP.NET identifica sessões exclusivamente com cada navegador. Por padrão, o identificador exclusivo de uma sessão é armazenado em um cookie de sessão que não expira no navegador. Você pode especificar que os identificadores de sessão não sejam armazenados em um cookie definindo o cookieless
atributo como true
no elemento de configuração sessionState .
Observação
Para melhorar a segurança do aplicativo, seu aplicativo deve permitir que os usuários façam logoff, momento em que ele deve chamar o Abandon método. Isso reduz o potencial de uma fonte indesejada usando o identificador exclusivo na URL para recuperar dados privados armazenados na sessão para um usuário.
ASP.NET mantém o estado da sessão sem cookie inserindo automaticamente uma ID de sessão exclusiva na URL da página. Por exemplo, a SEGUINTE URL foi modificada por ASP.NET para incluir a ID de sessão exclusiva lit3py55t21z5v55vlm25s55:
http://www.example.com/(S(4danlfat035muve4g0mvgfrr))/orderform.aspx
ASP.NET modifica os links contidos em todas as páginas solicitadas inserindo um valor de ID de sessão nos links pouco antes de enviar cada página para o navegador. O estado da sessão é mantido desde que o usuário siga o caminho dos links fornecidos pelo site. No entanto, se o agente de usuário reescrever uma URL, a instância de estado de sessão será perdida.
A ID da sessão é inserida na URL após a barra que segue o nome do aplicativo e antes de qualquer arquivo restante ou identificador de diretório virtual. Isso permite que ASP.NET resolvam o nome do aplicativo antes de envolver o SessionStateModule na solicitação.
Por padrão, os identificadores de sessão usados em sessões sem cookie são reciclados. Ou seja, se uma solicitação for feita com uma ID de sessão que expirou, uma nova sessão será iniciada usando a ID de sessão fornecida com a solicitação. Esse comportamento pode resultar no compartilhamento indesejado de dados de sessão quando um link que contém uma ID de sessão sem cookie é compartilhado com vários navegadores, talvez por meio de um mecanismo de pesquisa ou outro programa. Você pode reduzir a possibilidade de dados de sessão serem compartilhados por vários clientes desabilitando a reciclagem de identificadores de sessão. Para fazer isso, defina o regenerateExpiredSessionId
atributo do elemento de configuração sessionState como true
. Isso resultará na geração de uma nova ID de sessão quando uma solicitação de sessão sem cookie for feita com uma ID de sessão expirada. Observe que, se a solicitação feita com a ID de sessão expirada usar o método HTTP POST
, todos os dados postados serão perdidos quando regenerateExpiredSessionId
for true
, pois ASP.NET executa um redirecionamento para garantir que o navegador tenha o novo identificador de sessão na URL.
Observação
Embora a configuração do regenerateExpiredSessionId
atributo para true
reduza a possibilidade de compartilhamento indesejado de dados de sessão, ele não protege contra uma fonte indesejada que obtém acesso à sessão de outro usuário obtendo o valor e incluindo-o SessionID em solicitações ao servidor. Se você estiver armazenando informações privadas ou confidenciais no estado da sessão, é recomendável usar o SSL para criptografar qualquer comunicação entre o navegador e o servidor que inclua o SessionID.