Безопасно ли использовать Request.ApplicationPath для пути cookie - PullRequest
2 голосов
/ 25 марта 2010

Безопасно ли использовать такой код?

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

Я хочу знать обо всех угловых коробках, пожалуйста ...

Ответы [ 3 ]

5 голосов
/ 25 марта 2010

Короче, нет, это не безопасно. Использование путей к файлам cookie чревато проблемами, поскольку они чувствительны к регистру в IE и Chrome, но не в FF. Это означает, что любое несоответствие в регистре пути будет приводить к ошибкам.

  1. Если при создании файла cookie заданный вами путь отличается от того, который набрал пользователь, браузеры его не сохранят.

  2. Когда пользователь возвращается, если путь, который он вводит, отличается от случая с первой поездкой, браузер не будет предоставлять cookie с запросом.

Какую проблему вы пытаетесь решить?

2 голосов
/ 25 марта 2010

Если ваше приложение работает в корне домена, Request.ApplicationPath == "/". Следовательно, с вашим кодом путь вашего куки будет //. Вы можете обойти эту проблему, выполнив следующее:

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

Поскольку будет правильно указывать , вы захотите убедиться, что ваше приложение обеспечивает согласованный регистр URL-адресов (т.е. перенаправляет все запросы с URL-адресами, содержащими заглавные буквы, в их строчные эквиваленты).

Кроме этого, я полагаю, у вас все должно быть в порядке. Если вы хотите, чтобы все ваши файлы cookie имели «область приложения», рассмотрите возможность создания пользовательского IHttpModule с таким кодом (или расширением 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;
    }
}
1 голос
/ 16 июля 2010

Нет, это небезопасно по причинам, указанным Уиллом.

Но ... Вы можете использовать эту технику для выполнения своих намерений.

...