91 votes

Comment sécuriser le cookie ASP.NET_SessionId?

J'ai défini le cookie .ASPXAUTH sur https uniquement, mais je ne sais pas comment procéder de manière efficace avec ASP.NET_SessionId.

L'ensemble du site utilise HTTPS, il n'est donc pas nécessaire que le cookie fonctionne avec http et https.

195voto

Marcel Hoyer Points 511

Pour ajouter le ; secure suffixe au Set-Cookie http tête j'ai simplement utilisé le <httpCookies> élément dans le web.config:

 <system.web>
  <httpCookies httpOnlyCookies="true" requireSSL="true" />
<system.web>
 

IMHO beaucoup plus pratique que l'écriture de code comme dans l'article d'Anubhav Goyal.

Voir: http://msdn.microsoft.com/en-us/library/ms228262(v=vs.100).aspx

51voto

Joel Etherton Points 24155

Voici un extrait de code tiré d'un article de blog écrit par Anubhav Goyal :

 // this code will mark the forms authentication cookie and the
// session cookie as Secure.
if (Response.Cookies.Count > 0)
{
    foreach (string s in Response.Cookies.AllKeys)
    {
        if (s == FormsAuthentication.FormsCookieName || s.ToLower() == "asp.net_sessionid")
        {
             Response.Cookies[s].Secure = true;
        }
    }
}
 

L'ajout de cela au gestionnaire d'événements EndRequest dans le fichier global.asax devrait permettre de réaliser cela pour tous les appels de page.

17voto

Raghu Avirneni Points 51

En allant avec la solution de Marcel ci-dessus pour sécuriser le cookie d'authentification par formulaires, vous devez également mettre à jour l'élément de configuration "authentication" pour utiliser SSL

 <authentication mode="Forms">
   <forms ...  requireSSL="true" />
</authentication>
 

Un autre cookie d'authentification ne sera pas https

Voir: http://msdn.microsoft.com/en-us/library/vstudio/1d3t3c61(v=vs.100).aspx

11voto

Doug Domeny Points 2691

Il a été constaté que la définition de la propriété secure dans Session_Start est suffisante, comme recommandé dans le blog MSDN " Sécuriser l'ID de session: ASP / ASP.NET " avec certaines augmentations.

     protected void Session_Start(Object sender, EventArgs e)
    {
        SessionStateSection sessionState = 
 (SessionStateSection)ConfigurationManager.GetSection("system.web/sessionState");
        string sidCookieName = sessionState.CookieName;

        if (Request.Cookies[sidCookieName] != null)
        {
            HttpCookie sidCookie = Response.Cookies[sidCookieName];
            sidCookie.Value = Session.SessionID;
            sidCookie.HttpOnly = true;
            sidCookie.Secure = true;
            sidCookie.Path = "/";
        }
    }
 

-4voto

Nick Berardi Points 31361

Si tout le site utilise HTTPS, votre cookie sessionId est aussi sécurisé que le cryptage HTTPS. En effet, les cookies sont envoyés en tant qu'en-têtes HTTP et, lors de l'utilisation de SSL, les en-têtes HTTP sont chiffrés à l'aide du protocole SSL lors de leur transmission.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X