Por que não usar HTTPS para tudo?

126

Se eu estava configurando um servidor e tinha o (s) certificado (s) SSL, por que não utilizaria o HTTPS para todo o site, e não apenas para compras / logins? Eu acho que faria mais sentido criptografar todo o site e proteger o usuário completamente. Impediria problemas como decidir o que deve ser protegido porque tudo seria, e não é realmente um inconveniente para o usuário.

Se eu já estava usando um HTTPS para parte do site, por que não gostaria de usá-lo para todo o site?

Esta é uma pergunta relacionada: Por que o https é usado apenas para login? , mas as respostas não são satisfatórias. As respostas pressupõem que você não conseguiu aplicar https a todo o site.

Malfist
fonte
2
Surpreende-me que as empresas de serviços financeiros ainda usem o http.
Tom Hawtin - tackline
15
@ Tom Desejo que alguns dos sites que me enviam mensagens de phishing usem https para sites forjados, então sei que estou fornecendo meus dados ao phisher certo.
turbilhão
Obrigado por fazer esta pergunta. Eu estava assumindo que o desempenho era o motivo e seria muito pior que o http. Vendo as respostas, parece que o desempenho não é muito ruim, o que me faz pensar demais.
sundar - Restabelece Monica
4
Acho que você escolheu a pior resposta da página, com atualmente 11 votos negativos. A resposta que você escolheu desconsidera totalmente a segurança e as melhores práticas.
rook
5
Esta questão realmente merece uma resposta moderna e educada.
Old Badman Gray

Respostas:

17

Eu posso pensar em algumas razões.

  • Alguns navegadores podem não suportar SSL.
  • O SSL pode diminuir um pouco o desempenho. Se os usuários estiverem baixando arquivos públicos grandes, pode haver uma sobrecarga no sistema para criptografá-los a cada vez.
WhirlWind
fonte
137
Quais navegadores não suportam SSL?
Malfist 30/04/10
6
Algumas compilações do lynx não o suportam. Se você está suportando apenas navegadores mais novos, deve ficar bem.
WhirlWind
5
Eu estava analisando o seguinte: iweb.tntech.edu/hexb/publications/https-STAR-03122003.pdf " Quando o servidor está saturado, o desempenho do sistema do HTTPS atinge cerca de 67% do HTTP em termos de taxa de transferência."
turbilhão
16
Não t buy this explanation. 1) Donuso um navegador que não suporte SSL em 2013. 2) até o Google usa SSL no momento 3) configuração adequada, você pode redirecionar o tráfego http para o link https correto.
jfyelle
4
Má resposta, por que tantos votos positivos? O navegador no mundo does not suporte SSL e os usuários não tem que se lembrar de digitação https, pode ser tratado com redirecionamentos
Sanne
25

Além dos outros motivos (principalmente relacionados ao desempenho), você pode hospedar apenas um único domínio por endereço IP * ao usar HTTPS.

Um único servidor pode suportar vários domínios em HTTP porque o servidor HTTP cabeçalho permite que o servidor saber qual domínio para responder com.

Com o HTTPS, o servidor deve oferecer seu certificado ao cliente durante o handshake TLS inicial (que é antes do início do HTTP). Isso significa que o cabeçalho do servidor ainda não foi enviado, portanto não há como o servidor saber com qual domínio está sendo solicitado e com qual certificado (www.foo.com ou www.bar.com) responderá.


* Nota de rodapé: Tecnicamente, você pode hospedar vários domínios se os hospedar em portas diferentes, mas isso geralmente não é uma opção. Você também pode hospedar vários domínios se o seu certificado SSL tiver um curinga. Por exemplo, você pode hospedar foo.example.com e bar.example.com com o certificado * .example.com

Eadwacer
fonte
5
Ter um certificado SSL curinga não resolveria esse problema?
Rob
A nota de rodapé contradiz a resposta: / você pode usar certificados curinga e hospedar qualquer domínio. en.wikipedia.org/wiki/Wildcard_certificate
lucascaro
23
Esse problema foi resolvido há muito tempo pela indicação de nome de servidor, que é suportada por todos os principais navegadores atualmente. pt.wikipedia.org/wiki/Server_Name_Indication
tia
@tia exceto nem todos os servidores web apoiá-lo
meffect
2
@ meffect ... Mas muitos fazem, incluindo apache2, nginx, lighttpd e nodejs. Além disso, o desenvolvedor escolhe o proxy reverso que eles usam para o encapsulamento HTTPS. Dizer "nenhum cliente suporta" seria um ponto válido se fosse verdade, porque é algo que o desenvolvedor não tem controle e deve levar em consideração. No entanto, dizer "alguns servidores não suportam" é irrelevante, precisamente porque não precisa ser considerado. Especialmente quando todos os servidores do mainstream que realmente tem apoio.
Tiro parta
13

SSL / TLS não é usado com bastante frequência. O HTTPS deve ser usado para toda a sessão ; em nenhum momento um ID da sessão pode ser enviado por HTTP. Se você estiver usando apenas https para fazer login, estará violando claramente as 10 principais OWASP de 2010 "A3: autenticação quebrada e gerenciamento de sessões".

torre
fonte
Isso pode ser muito amplo de uma suposição. Não há motivo para que o estado da sessão não possa ser gerenciado separadamente para http e https por meio da operação de login https único. É provável que seja mais trabalhoso do que vale e convide bugs relacionados à segurança, mas parece não constituir automaticamente uma violação clara.
Einstein
@ Einstein, por favor leia o OWASP A3, está muito claro. Lembre-se de que o invasor não precisa do nome de usuário / senha se tiver o cookie de uma sessão autenticada.
rook
O site fornece https / http misto. https login fornece tokens de sessão de baixa e alta segurança separados. Os tokens de baixa segurança atribuídos apenas à sessão http não funcionariam para operações que exigem alta segurança. Pela minha leitura, o OWASP A3 está esclarecendo o problema básico da possibilidade de acesso de alta segurança via transporte de baixa segurança.
Einstein
@ Einstein Então você discorda de que os IDs de sessão sejam usados ​​para autenticar navegadores da web? Leve em consideração esse padrão de ataque. Nos ataques xss, você está tentando obter o valor document.cookiepara que o invasor possa usá-lo para autenticar. Esse valor também pode ser obtido detectando o tráfego, cujo https pára. Não sei exatamente qual é o seu ponto.
torre
No seu cenário, o ID da sessão para http seria inútil para recursos protegidos por https se um sistema criasse duas sessões separadas para uma única ação de autenticação para permitir que ambos os protocolos fossem usados ​​sem a sessão https e recursos associados expostos pelo cookie da sessão http. Por exemplo, a sessão http pode ser usada para identificação de acesso a recursos públicos para fins de geração de relatórios ou acesso a painéis de mensagens públicas, mas eles não seriam válidos para recursos seguros.
Einstein
12

Por que não enviar todas as mensagens de correio tradicional em um envelope opaco à prova de violação pelo correio registrado? Alguém da agência postal sempre teria sua custódia pessoal, portanto você pode ter certeza de que ninguém está bisbilhotando suas correspondências. Obviamente, a resposta é que, enquanto alguns e-mails valem a despesa, a maioria deles não. Eu não me importo se alguém lê o meu "Que bom que você saiu da cadeia!" cartão postal para o tio Joe.

A criptografia não é gratuita e nem sempre ajuda.

Se uma sessão (como compras, bancos, etc.) for encerrada usando HTTPS, não há uma boa razão para não tornar a sessão inteira HTTPS o mais cedo possível.

Minha opinião é que o HTTPS deve ser usado somente quando inevitavelmente necessário, porque a solicitação ou a resposta precisa ser protegida contra a espionagem intermediária. Como exemplo, vá para o Yahoo! pagina inicial. Mesmo que você esteja logado, a maior parte da sua interação será por HTTP. Você se autentica em HTTPS e obtém cookies que comprovam sua identidade, portanto não precisa de HTTPS para ler notícias.

David M
fonte
RI MUITO!!! Ótimo! Aposto que o carteiro desonestos abrir o envelope com "Fico feliz que você saiu da prisão" vai assustar as calças um pouco e feche-a perfeitamente ..
Andrei Rînea
19
Se o correio registrado custasse 1% a mais em vez de 300% a mais, eu o usaria para tudo.
Solublefish
3
You authenticate over HTTPS and get cookies that prove your identity, so you don't need HTTPS to read news stories.Essa não é a maneira correta de lidar com a autenticação de sessão. Os cookies devem ser definidos com o sinalizador SECURE. Mas desconsiderando esse horrível conselho de segurança por um segundo ... Sua analogia com o correio não é realmente precisa por alguns motivos. Uma delas é que você geralmente não pode injetar explorações nos emails de retorno, ou personificar alguém com impunidade, ou exibir uma mensagem "Sua sessão expirou" nos emails de retorno, para que eles insiram novamente as credenciais usadas no Yahoo! e o banco deles.
Tiro parta
A reutilização de senha e a fixação da sessão, entre outras coisas, não são problemas no snail mail.
Parthian Shot
Esses são bons pontos, mas você está aplicando 2,016 análise a uma discussão em 2010.
David M
12

O maior motivo, além da carga do sistema, é que ele quebra a hospedagem virtual baseada em nome. Com o SSL, é um site - um endereço IP. Isso é muito caro, além de mais difícil de administrar.

Adam Wright
fonte
+1 É o motivo pelo qual o Google App Engine não oferece suporte a https em domínios personalizados. Esperando que o TLS-SNI seja mais amplamente suportado.
Sripathi Krishnan
1
Você pode recuperar isso com o hardware de terminação SSL. E se a carga do sistema for um problema (é para muitas pessoas!), O SSL do hardware pode ser o caminho a seguir.
31710 Jason
exceto que você pode ter vários domínios no mesmo certificado.
Lucascaro
10
Não é verdade. (Não mais, de qualquer maneira.)
Tiro parta
7
Voto negativo, porque as informações na postagem são obsoletas. O SNI agora é suportado por todos os principais navegadores.
Martin Törnwall 31/07
5

Para links de alta latência, o handshake TLS inicial requer viagens de ida e volta adicionais para validar a cadeia de certificados (incluindo o envio de certificados intermediários), concordar com conjuntos de cifras e estabelecer uma sessão. Depois que uma sessão é estabelecida, os pedidos subsequentes podem utilizar o cache da sessão para reduzir o número de viagens de ida e volta, mas mesmo nesse melhor caso, ainda há mais viagens de ida e volta do que uma conexão HTTP normal exige. Mesmo que as operações de criptografia sejam gratuitas, as viagens de ida e volta não são e podem ser bastante perceptíveis em links de rede mais lentos, especialmente se o site não alavancar o pipelining http. Para usuários de banda larga em um segmento bem conectado da rede, isso não é um problema. Se você faz negócios com solicitações internacionais de https, pode facilmente causar atrasos visíveis.

Existem considerações adicionais, como a manutenção do estado da sessão no servidor, exigindo potencialmente mais memória e, é claro, operações de criptografia de dados. Qualquer site pequeno praticamente não precisa se preocupar com a capacidade do servidor ou com o custo do hardware atual. Qualquer site grande poderia facilmente comprar placas de descarga ou complemento de CPU / w AES para fornecer funcionalidade semelhante.

Todos esses problemas estão se tornando cada vez mais problemáticos, à medida que o tempo passa e os recursos de hardware e de rede melhoram. Na maioria dos casos, duvido que exista alguma diferença tangível hoje.

Pode haver considerações operacionais, como restrições administrativas no tráfego https (pense em filtros de conteúdo intermediários ... etc.), possivelmente alguns regulamentos corporativos ou governamentais. Algum ambiente corporativo exige descriptografia de dados no perímetro para evitar vazamento de informações ... interferência em pontos de acesso e sistemas de acesso semelhantes baseados na Web, incapazes de injetar mensagens em transações https. No final do dia, na minha opinião, os motivos para não acessar https por padrão provavelmente serão muito pequenos.

Einstein
fonte
4

https requer mais recursos do que o http normal.

Exige mais dos servidores e dos clientes.

Johan
fonte
3

Se a sessão inteira estiver criptografada, você não poderá usar o cache para recursos estáticos, como imagens e js no nível de proxy, por exemplo, ISP.

Alexei Tenitski
fonte
Bem, exceto para proxies com terminação SSL ou se você estiver usando uma CDN compatível com HTTPS.
Tiro parta
3

Você deve usar HTTPS em qualquer lugar, mas perderá o seguinte:

  1. Definitivamente, você não deve usar compactação SSL ou compactação HTTP sobre SSL, devido a ataques BREACH e CRIME. Portanto, não haverá compactação se sua resposta contiver identificadores de sessão ou csrf. Você pode atenuar isso colocando seus recursos estáticos (imagens, js, css) em um domínio sem cookies e usar a compactação. Você também pode usar a minificação de HTML.

  2. Um certificado SSL, um endereço IP, a menos que seja usado o SNI, que não funciona em todos os navegadores (Android antigo, Blackberry 6, etc.).

  3. Você não deve hospedar nenhum conteúdo externo em suas páginas que não seja SSL.

  4. Você perde o cabeçalho de referência HTTP de saída quando o navegador acessa uma página HTTP, o que pode ou não ser um problema para você.

Neil McGuigan
fonte
0

Bem, a razão óbvia é o desempenho: todos os dados precisarão ser criptografados pelo servidor antes da transmissão e depois descriptografados pelo cliente após o recebimento, o que é uma perda de tempo se não houver dados confidenciais. Também pode afetar a quantidade de cache do seu site.

Também é potencialmente confuso para os usuários finais se todos os endereços usarem https://e não o familiar http://. Além disso, veja esta resposta:

Por que não usar sempre https ao incluir um arquivo js?

Will Vousden
fonte
9
por que isso confundiria os usuários? Quantos realmente olham para o protocolo da uri?
Malfist
Hoje, 10 anos depois, o https é mais comum e o http seria confuso
madprops
0

https exige que o servidor criptografe e descriptografe solicitações e respostas do cliente. O impacto no desempenho aumentará se o servidor estiver atendendo muitos clientes. É por isso que a maioria das implementações atuais de https é limitada apenas à autenticação de senha. Porém, com o aumento do poder de computação, isso pode mudar, afinal o Gmail usa SSL para todo o site.

futureelite7
fonte
0

Além da resposta da WhirlWind, você deve considerar o custo e a aplicabilidade dos certificados SSL, os problemas de acesso (é possível, embora improvável, que um cliente possa não conseguir se comunicar via porta SSL), etc.

Usar SSL não é um cobertor garantido de segurança. Esse tipo de proteção precisa ser incorporado à arquitetura do aplicativo, em vez de tentar confiar em alguma bala mágica.

3Dave
fonte
2
Como o usuário já está protegendo parte do site, o custo do certificado é mais ou menos discutível.
precisa saber é o seguinte
2
@ futureelite7 bom ponto, mas provavelmente relevante para outras pessoas que possam estar pesquisando esse tópico no futuro.
precisa saber é o seguinte
O característica é o inimigo da segurança. A maioria das fraquezas das minhas coisas tem raízes em algum recurso desaconselhável que eu ou um predecessor aceitamos no plano do produto. Acho que o lançamento de um recurso porque causa uma vulnerabilidade de segurança não o torna mais popular do que recusá-lo. A popularidade NÃO DEVE Importar, mas, infelizmente, pode e faz. No seu lugar, eu me perguntava o quanto realmente quero lidar com usuários não seguros, ou se o aplicativo é adequado para usuários que não podem usar criptografia (pense: bancos, política, ativismo).
31710 Jason
0

Foi-me dito que em um projeto da nossa empresa, eles descobriram que a largura de banda ocupada pelas mensagens SSL era significativamente maior do que as mensagens simples. Acredito que alguém me disse que eram 12 vezes mais dados surpreendentes. Eu mesmo não verifiquei isso e parece muito alto, mas se houver algum tipo de cabeçalho adicionado a cada página e a maioria das páginas tiver uma pequena quantidade de conteúdo, isso pode não estar tão distante.

Dito isto, o incômodo de ir e voltar entre http e https e acompanhar quais páginas são as que me parecem muito esforço. Apenas uma vez tentei construir um site que os misturasse e acabamos abandonando o plano quando fomos atropelados por coisas complexas, como janelas pop-up criadas por Javascript, conectando o protocolo errado a elas e esse tipo de coisa. Acabamos tornando o site inteiro https como menos problemas. Eu acho que em casos simples em que você apenas tem uma tela de login e uma tela de pagamento que precisam ser protegidas e são páginas simples, não seria um grande problema misturar e combinar.

Eu não me preocuparia muito com a carga que o cliente teria de descriptografar. Normalmente, o cliente gasta muito mais tempo aguardando a chegada dos dados do que o necessário para processá-los. Até que os usuários rotineiramente tenham conexões de Internet gigabit / s, o poder de processamento do cliente provavelmente é bastante irrelevante. A energia da CPU solicitada pelo servidor para criptografar páginas é um problema diferente. Pode haver problemas em não conseguir acompanhar centenas ou milhares de usuários.

Jay
fonte
1
A largura de banda extra é pequena, mesmo no pior caso.
Presidente James K. Polk
0

Outro ponto pequeno (talvez alguém possa verificar): se um usuário digitar dados em um item de formulário, como uma caixa de texto e, por algum motivo, atualizar a página ou o servidor travar por um segundo, os dados digitados pelo usuário serão perdidos usando HTTPS, mas é preservado usando HTTP.

Nota: Não tenho certeza se isso é específico do navegador, mas certamente acontece com o meu navegador Firefox.

toc777
fonte
0

O Windows Server 2012 com IIS 8.0 agora oferece SNI, que é a indicação do nome do servidor, que permite que vários aplicativos da Web SSL no IIS sejam hospedados em um endereço IP.

Webmaister
fonte
1
O que isso tem a ver com a questão? É uma característica interessante, mas não vejo a relevância.
user1618143