Comment définir l'indicateur de sécurité sur un cookie de session ASP.NET?
-
22-07-2019 - |
Question
Comment définir l'indicateur Sécurisé sur un cookie de session ASP.NET afin qu'il ne soit transmis que par HTTPS et jamais par HTTP pur?
La solution
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 les sessions en SSL uniquement et dans l'authentification par formulaires, mais si vous activez SSL sur httpcookies, vous doit également l'activer à l'intérieur de la configuration des formulaires.
Modifier pour plus de clarté:
Mettez ceci dans <system.web>
<httpCookies requireSSL="true" />
Autres conseils
Dans l'élément <system.web>
, ajoutez l'élément suivant:
<httpCookies requireSSL="true" />
Toutefois, si vous avez un élément <forms>
dans votre bloc system.web\authentication
, le remplacement du paramètre défini dans httpCookies
sera remplacé par le paramètre par défaut false
.
Dans ce cas, vous devez également ajouter l'attribut requireSSL="true"
à l'élément de formulaire.
Vous allez donc vous retrouver avec:
<system.web>
<authentication mode="Forms">
<forms requireSSL="true">
<!-- forms content -->
</forms>
</authentication>
</system.web>
Si vous parlez de code archivé dans un environnement d'entreprise, les choses se compliquent rapidement. Nous avons constaté que la meilleure approche consiste à ce que web.Release.config contienne les éléments suivants:
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<authentication>
<forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
</authentication>
</system.web>
De cette façon, les développeurs ne sont pas affectés (sous Debug) et seuls les serveurs dotés des versions Release exigent que les cookies soient en SSL.
secure - Cet attribut indique au navigateur de n'envoyer le cookie que si la demande est envoyée sur un canal sécurisé tel que HTTPS. Cela aidera à protéger le cookie contre les requêtes non chiffrées. Si vous pouvez accéder à l'application via HTTP et HTTPS, le cookie peut être envoyé en texte clair.