Houve muitas discussões enquanto eu pesquisava como tornar meu site inteiro https. A maioria das respostas foi redirecionar http para https (arquivo .htaccess), o que não é bom, porque não é bom fazer o mesmo trabalho duas vezes (duas solicitações). Além disso, o "homem do meio" primeiro usa o http, e eu quero que meu site vá diretamente no https. Existe outra maneira de tornar o site inteiro https e como fazer isso? Por exemplo, quando o usuário digita example.com, esse example.com acessa automaticamente https, sem redirecionar de http ou qualquer outra coisa primeiro?
14
Respostas:
Não. Você não pode fazer magicamente o navegador do visitante escolher o protocolo certo. Um redirecionamento é a maneira de fazer isso.
fonte
http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security permite que seu servidor indique que o domínio deve ser acessado apenas via HTTPS. Isso se aplica apenas a solicitações subseqüentes; portanto, haveria um carregamento HTTP inicial, mas solicitações futuras carregariam HTTPS mesmo se alguém digitasse HTTP explicitamente.
O IE ainda não o suporta, mas todas as outras empresas fazem.
fonte
Como já foi dito, você não pode forçar os usuários a escolher o protocolo certo. Mas quando o usuário tenta usar HTTP, o que você deve fazer? Um redirecionamento também é insuficiente, porque um invasor sentado entre você e o cliente pode interceptar o redirecionamento, para que o cliente nunca o veja. O cliente continuará enviando HTTP simples e o invasor removerá a camada SSL do servidor ( ataque de remoção de SSL ).
A única maneira certa de evitar isso é não servir HTTP . Não responda na porta 80, exceto talvez para servir uma página de texto sem formatação direcionando o usuário a tentar novamente com HTTPS (mas não fornecendo um link, que o invasor possa manipular). Isso forçará o usuário a digitar
https://
no navegador, para iniciar a conexão com SSL e impedir o ataque do MITM.fonte
https://
. Em vez disso, eles dirão "huh, o site está quebrado" e vão embora. Na melhor das hipóteses, pode haver umawww.example.com
resposta ao HTTP e HTTPS, mas ter o próprio aplicativo sendo executado em algo comoadmin.example.com
apenas com HTTPS.Não é inteiramente verdade: como usar DNS / nomes de host ou outras maneiras de resolver para um IP específico: porta
Existe uma maneira, mas a maioria dos navegadores não implementa o rfc2782.
fonte
O ceejayoz tem a melhor resposta para evitar o ataque especificamente mencionado aqui, mas também quero destacar o que muitas pessoas estão perdendo aqui, o que é basicamente porque o HTTP já descobriu a outra parte. Você deseja fazer um redirecionamento 301 permanente. Isso informa ao cliente para fazer novas solicitações para o novo endereço. Então, sim, se alguém digitar o URL errado, ele fará 2 solicitações, MAS, no futuro, um bom cliente deve detectar solicitações para essa URL e fazer a solicitação correta para evitar mais solicitações desperdiçadas. O problema é que isso é apenas para esse URL exato. O HSTS aprimora esse esquema dizendo também 'pelos próximos n segundos também não permite conexões não seguras desse domínio'.
Os usuários não devem visitar sites confidenciais em locais não seguros. Eles não devem se inscrever especialmente em locais inseguros. Estes são princípios básicos de segurança do usuário que devem ser ensinados da mesma forma: 'não abra anexos de fontes não confiáveis'. Qual é realmente a melhor resposta para impedir ataques MiM em sites que nunca foram visitados.
Como observação lateral, alguns navegadores aprimoram isso dizendo também que certos sites conhecidos sempre usam HSTS. Infelizmente, você não pode simplesmente se adicionar a esta lista facilmente.
Leituras adicionais: http://coderrr.wordpress.com/2010/12/27/canonical-redirect-pitfalls-with-http-strict-transport-security-and-some-solutions/
http://dev.chromium.org/sts
fonte