Comment puis-je définir l'indicateur Secure sur un cookie de session ASP.NET, de sorte qu'il ne soit transmis que via HTTPS et jamais via HTTP standard?
146
Comment puis-je définir l'indicateur Secure sur un cookie de session ASP.NET, de sorte qu'il ne soit transmis que via HTTPS et jamais via HTTP standard?
Il y a deux façons, un httpCookies
élément dans web.config
vous permet d'activer requireSSL
qui ne transmet que tous les cookies, y compris la session en SSL uniquement et également l'authentification par formulaire à l'intérieur, mais si vous activez SSL sur httpcookies, vous devez également l'activer dans la configuration des formulaires.
Modifier pour plus de clarté:
mettez ceci dans<system.web>
<httpCookies requireSSL="true" />
<httpCookies requireSSL="true" />
Dans l'
<system.web>
élément, ajoutez l'élément suivant:Cependant, si vous avez un
<forms>
élément dans votresystem.web\authentication
bloc, cela remplacera le paramètre danshttpCookies
, le réinitialisant à la valeur par défautfalse
.Dans ce cas, vous devez également ajouter l'
requireSSL="true"
attribut à l'élément forms.Vous vous retrouverez donc avec:
Voir ici et ici pour la documentation MSDN de ces éléments.
la source
roleManager
élément, son attributcookieRequireSSL="true"
doit également être défini sur true. Réf. msdn.microsoft.com/en-us/library/…Les choses se compliquent rapidement si vous parlez de code enregistré dans un environnement d'entreprise. Nous avons constaté que la meilleure approche consiste à faire en sorte que le fichier web.Release.config contienne les éléments suivants:
De cette façon, les développeurs ne sont pas affectés (s'exécutant dans Debug), et seuls les serveurs qui obtiennent des versions Release exigent que les cookies soient SSL.
la source
secure - Cet attribut indique au navigateur d'envoyer le cookie uniquement si la demande est envoyée via un canal sécurisé tel que HTTPS. Cela aidera à empêcher le cookie d'être transmis sur des demandes non chiffrées. Si l'application est accessible via HTTP et HTTPS, il est possible que le cookie puisse être envoyé en texte clair.
la source
En me basant sur la réponse de @Mark D, j'utiliserais les transformations web.config pour définir tous les différents cookies sur Secure. Cela inclut le réglage
anonymousIdentification cookieRequireSSL
ethttpCookies requireSSL
.À cette fin, vous configurez votre web.Release.config comme:
Si vous utilisez l'authentification des rôles et des formulaires avec
ASP.NET Membership Provider
(je sais, c'est ancien), vous voudrez également définirroleManager cookieRequireSSL
lesforms requireSSL
attributs et comme sécurisés. Si tel est le cas, votre web.release.config pourrait ressembler à ceci (inclus ci-dessus plus de nouvelles balises pour l'API d'adhésion):Informations générales sur web.config se transforme ici: http://go.microsoft.com/fwlink/?LinkId=125889
Évidemment, cela va au-delà de la question initiale de l'OP, mais si vous ne les configurez pas tous pour sécuriser, vous pouvez vous attendre à ce qu'un outil d'analyse de sécurité le remarque et vous verrez des drapeaux rouges apparaître sur le rapport. Demandez-moi comment je sais. :)
la source