Réponses:
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" />
Dans l' <system.web>
élément, ajoutez l'élément suivant:
<httpCookies requireSSL="true" />
Cependant, si vous avez un <forms>
élément dans votre system.web\authentication
bloc, cela remplacera le paramètre dans httpCookies
, le réinitialisant à la valeur par défaut false
.
Dans ce cas, vous devez également ajouter l' requireSSL="true"
attribut à l'élément forms.
Vous vous retrouverez donc avec:
<system.web>
<authentication mode="Forms">
<forms requireSSL="true">
<!-- forms content -->
</forms>
</authentication>
</system.web>
roleManager
élément, son attribut cookieRequireSSL="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:
<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 (s'exécutant dans Debug), et seuls les serveurs qui obtiennent des versions Release exigent que les cookies soient SSL.
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.
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
et httpCookies requireSSL
.
À cette fin, vous configurez votre web.Release.config comme:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
</system.web>
</configuration>
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éfinir roleManager cookieRequireSSL
les forms 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):
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<roleManager xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<authentication>
<forms xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
</authentication>
</system.web>
</configuration>
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. :)
<httpCookies requireSSL="true" />