Como posso definir o sinalizador seguro em um cookie de sessão do ASP.NET, para que ele seja transmitido apenas por HTTPS e nunca por HTTP simples?
146
Como posso definir o sinalizador seguro em um cookie de sessão do ASP.NET, para que ele seja transmitido apenas por HTTPS e nunca por HTTP simples?
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" />
<httpCookies requireSSL="true" />
No
<system.web>
elemento, adicione o seguinte elemento:No entanto, se você tiver um
<forms>
elemento em seusystem.web\authentication
bloco, isso substituirá a configuraçãohttpCookies
, retornando-a ao padrãofalse
.Nesse caso, você precisa adicionar o
requireSSL="true"
atributo também ao elemento forms.Então você vai acabar com:
Veja aqui e aqui a documentação do MSDN desses elementos.
fonte
roleManager
elemento, seu atributocookieRequireSSL="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:
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.
fonte
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.
fonte
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
ehttpCookies requireSSL
.Para esse fim, você configuraria seu web.Release.config como:
Se você estiver usando Autenticação de Funções e Formulários com o
ASP.NET Membership Provider
(eu sei, é antigo), também desejará definirroleManager cookieRequireSSL
osforms 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):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. :)
fonte