Respostas:
Há duas maneiras: um httpCookies
elemento web.config
permite ativar a requireSSL
transmissão de todos os cookies, incluindo apenas a sessão SSL e também a autenticação de formulários, mas se você ativar o SSL em httpcookies, também deverá ativá-lo na configuração de formulários.
Editar para maior clareza:
coloque isso em<system.web>
<httpCookies requireSSL="true" />
No <system.web>
elemento, adicione o seguinte elemento:
<httpCookies requireSSL="true" />
No entanto, se você tiver um <forms>
elemento em seu system.web\authentication
bloco, isso substituirá a configuração httpCookies
, retornando-a ao padrão false
.
Nesse caso, você precisa adicionar o requireSSL="true"
atributo também ao elemento forms.
Então você vai acabar com:
<system.web>
<authentication mode="Forms">
<forms requireSSL="true">
<!-- forms content -->
</forms>
</authentication>
</system.web>
roleManager
elemento, seu atributo cookieRequireSSL="true"
também deverá ser definido como true. Ref. msdn.microsoft.com/en-us/library/…
As coisas ficam confusas rapidamente se você está falando sobre código de check-in em um ambiente corporativo. Descobrimos que a melhor abordagem é fazer com que o web.Release.config contenha o seguinte:
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<authentication>
<forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
</authentication>
</system.web>
Dessa forma, os desenvolvedores não são afetados (em execução no Debug) e apenas os servidores que obtêm versões do Release exigem que os cookies sejam SSL.
secure - Este atributo diz ao navegador para enviar o cookie apenas se a solicitação estiver sendo enviada por um canal seguro, como HTTPS. Isso ajudará a proteger o cookie de não passar por solicitações não criptografadas. Se o aplicativo puder ser acessado por HTTP e HTTPS, é possível que o cookie possa ser enviado em texto não criptografado.
Com base na resposta do @Mark D, eu usaria as transformações web.config para definir todos os vários cookies como Secure. Isso inclui a configuração anonymousIdentification cookieRequireSSL
e httpCookies requireSSL
.
Para esse fim, você configuraria seu web.Release.config como:
<?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>
Se você estiver usando Autenticação de Funções e Formulários com o ASP.NET Membership Provider
(eu sei, é antigo), também desejará definir roleManager cookieRequireSSL
os forms requireSSL
atributos e também como seguros. Nesse caso, seu web.release.config pode ficar assim (incluído acima, mais novas tags para a API de associação):
<?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>
O histórico do web.config se transforma aqui: http://go.microsoft.com/fwlink/?LinkId=125889
Obviamente, isso vai além da questão original do OP, mas se você não definir todos eles para garantir, pode esperar que uma ferramenta de verificação de segurança seja notada e você verá sinais vermelhos no relatório. Me pergunte como eu sei. :)
<httpCookies requireSSL="true" />