Pergunta

É seguro usar esse código?

Response.Cookies[cookieName].Path = Request.ApplicationPath + "/";

Eu quero saber sobre todos os casos de canto, por favor ...

Foi útil?

Solução

Em suma, não, não é seguro. O uso de caminhos de biscoitos está repleto de problemas, pois eles são sensíveis ao IE e Chrome, mas não no FF. Isso significa que qualquer incompatibilidade no caso do caminho irá encher as coisas.

  1. Ao gerar um cookie, se o caminho que você definir difere para o que o usuário digitou, os navegadores não o armazenam.

  2. Quando o usuário retornar, se o caminho que eles entrarem diferentes, no caso da primeira viagem, o navegador não fornecerá ao cookie a solicitação.

Que problema você está tentando resolver?

Outras dicas

Se o seu aplicativo for executado na raiz de um domínio, Request.ApplicationPath == "/". Portanto, com seu código, o caminho do seu cookie será //. Você pode se esquivar desse problema fazendo isso:

cookie.Path = Request.ApplicationPath;
if (cookie.Path.Length > 1) cookie.Path += '/';

Como Vai apontar corretamente, você deseja garantir que seu aplicativo aplique uma carcaça consistente de URLs (ou seja, redirecre todas as solicitações com URLs contendo letras maiúsculas para o equivalente minúsculo).

Fora isso, acredito que você deve estar bem fazendo isso. Se você deseja que todos os seus cookies sejam "Scoped", considere criar um costume IHttpModule com código como este (ou estender global.asax.cs):

private void Application_EndRequest(object sender, EventArgs e)
{
    var app = (HttpApplication)sender;

    var cookiePath = app.Request.ApplicationPath;
    if (cookiePath.Length > 1) cookiePath += '/';

    foreach (string name in app.Response.Cookies.AllKeys)
    {
        var cookie = app.Response.Cookies[name];
        cookie.Path = cookiePath;
    }
}

Não, não é seguro, pelos motivos que serão especificados.

Mas ... você pode querer empregar esta técnica para cumprir sua intenção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top