Se você já desenvolveu um website ou um sistema web, ou melhor, pensa em desenvolver algo e hospedar na web. Bom, é bem provável que você tenha se deparado com o seguinte dilema: usar HTTP ou HTTPS?
Sim, essa é uma das dúvidas mais comuns nessas horas. Isso porque o HTTP e o HTTPS são os protocolos padrões para navegação na Internet e eles possuem certas diferenças.
Essas diferenças geram consequências na utilização do site/aplicação. A escolha entre HTTP e HTTPs influencia em fatores como: segurança, velocidade e ranqueamento.
Sendo assim, como saber quais são as vantagens e desvantagens de cada um? Quando usar um ou outro? E em quais situações? Bom, é basicamente sobre isso que iremos tratar neste artigo. Então, continue lendo!
O que é o HTTP?
A sigla HTTP vem do termo em inglês HyperText Transfer Protocol (ou Protocolo de Transferência por Hipertexto). Ele funciona como o protocolo padrão para a navegação web. Com ele, os navegadores solicitam páginas na internet e tratam do seu recebimento.
Devido a este mecanismo, é o protocolo HTTP quem define os parâmetros de cada requisição de páginas, como exemplo, como os dados inseridos pelo usuário são enviados e de que forma o servidor envia possíveis mensagens de erro.
Apesar de serem dados sensíveis, eles são tratados de forma textual, já que o HTTP é um protocolo baseado em texto. Dessa forma, os dados que são enviados podem ser acessados no meio do tráfego, prejudicando (e muito!) a segurança da informação.
Sendo assim, tais dados podem ser acessados ou lidos. No pior cenário, o resultado da requisição pode ser alterado, te levando para uma outra página. Um exemplo que pode ser dado é o de um home banking
Se o sistema bancário utiliza HTTP, é possível que um hacker altere as transações feitas pelo site. Ele pode conseguir, por exemplo, que quantias transferidas sejam desviadas para sua conta (hacker). Dessa forma, alterando os parâmetros que o protocolo HTTP processa.
Percebe-se, dessa forma, que o protocolo HTTP não oferece nenhuma camada de segurança em sua implementação. Para algumas aplicações e sites, isso pode não ser tão importante. Agora, para um homebanking (exemplo acima), ou para um ecommerce, claramente o protocolo HTTP não é a melhor solução, certo?
“Então, como resolver isso?” – Pensaram os gênios da época
“Simples! Vamos criar o protocolo HTTPS!” – Disseram os gênios
Então, vamos descobrir o que esse tal de HTTPS faz e como ele funciona.
IMPORTANTE: se você não está familizarizado com os termos client-side (lado do cliente) e server-side (lado do servidor), recomendo que primeiro você dê uma lida nesse nosso outro artigo sobre o assunto.
O que é HTTPS?
O “S” nessa nova sigla significa justamente “Segurança”. Ou seja, o HTTPS é um HTTP seguro, já que são adicionadas camadas de segurança ao HTTP tradicional. Com isso, garante-se a integridade, confidencialidade e autenticação.
Vamos explicar cada um desses requisitos:
- Integridade: garante que as mensagens não foram alteradas/
- Confidencialidade: a mensagem será lida apenas pelo destinatário real;
- Autenticação: comprovação de que o servidor é realmente o servidor esperado.
Para que esses princípios sejam cumpridos, o HTTPS utiliza uma série de mecanismos que serão explicados abaixo. São eles:
- TLS e SSL
- Criptografia
- MAC
- Certificados digitais
TLS e SSL
Em poucas palavras, o que faz o HTTP ser seguro são os protocolos SSL (Secure Sockets Layer) e sua versão mais recente, o TLS (Tansport Layer Security). Ambas as tecnologias são camadas de segurança que garantem integridade e confidencialidade a sistemas web. O que faz com que esses dois protocolos garantam tais princípios é a famosa criptografia dos dados.
Criptografia
A criptografia no HTTPS funciona com um par de chaves, sendo uma chave pública e outra privada. Estas chaves são criadas pelo administrador do site. Cada vez que um usuário solicita uma conexão ao site, o servidor envia a chave pública para este usuário. Com esta chave, o usuário tem a garantia de que toda a comunicação chegará apenas para o servidor, já que a chave privada se encontra no servidor.
Estas chaves só funcionam em conjunto, como um par. Se o servidor perceber que uma outra chave pública quer se conectar a ele, ele fecha a conexão automaticamente, pois percebe que pode ser uma fraude.
No caso do HTTP, toda essa história de criptografia não existe, o que faz com que ele seja um modelo obsoleto e altamente arriscado para se trabalhar. Isso, é claro, quando se fala de aplicações que precisam de segurança. Se seu site for um trabalho da faculdade, por exemplo, não há a necessidade de implementar HTTPS, certo?
MAC (Message Authentication Code)
A integridade do HTTPS é garantida através da adição de um código em cada mensagem TLS/SSL. Esse código leva o nome de MAC. Basicamente, o MAC é quem permite que o destinatário saiba se houve alterações na mensagem. A forma como esse código é gerada é um pouco complexa, mas podemos dizer que ela envolve cálculos.
Um cálculo é feito no envio da mensagem, tendo como base o seu tamanho. No destino, outro cálculo é feito e esses dois valores precisam “bater”. Se não der “match”, significa que a mensagem foi alterada, fazendo com que a comunicação seja abortada.
Certificados digitais
Mesmo com tudo isso, ainda é possível que um hacker consiga atrapalhar a comunicação entre client-side e server-side. Isto porque a chave pública é gerada pelo servidor web. Ou seja, se alguém mal intencionado conseguir se colocar entre o servidor e o usuário, ele pode enganar o usuário. Mas para evitar isto, é usado o conceito de certificados.
Quando o administrador de um site cria um par de chaves, ele deve registrar estas chaves em alguma autoridade certificadora da Internet. Este órgão funciona como um tipo de cartório digital. Ele é o responsável por gerar um certificado digital que confirma a autenticidade da chave pública.
No caso de certificados de alta confiabilidade, este processo chega a ser físico. Um representante da empresa vai até uma localização física da autoridade certificadora, a fim de comprovar a identidade da empresa por meio de documentos legais.
Após este processo de certificação digital, o procedimento é simples. Cada vez que o servidor envia a chave pública para o cliente, ele envia também o certificado com suas informações. Dessa forma, é possível que o cliente consulte a validade da chave pública.
Vantagens e desvantagens do HTTPS
A partir de tudo que foi dito, sem terminar a leitura desse post, talvez até você queira comentar:
“OK OK! Me convenceu, a partir de agora só irei hospedar usando o protocolo HTTPS”
Realmente, parece até que estou fazendo uma propaganda de incentivo ao uso do protocolo HTTPS, mas vamos com calma. Para tudo na vida existe vantagens e desvantagens. Para os tipos de protocolo, isso não muda.
Portanto, agora chegou o momento de analisarmos os prós e contras do uso do HTTPS. A análise a seguir é baseada em quatro principais fatores: SEO (rankeamento no Google), experiência do usuário (UX), velocidade de carregamento e custos de contratação.
SEO (rankeamento no Google)
Se você busca ter um site relevante na web, SEO é uma palavra que deve fazer parte do seu vocabulário. A sigla SEO significa Search Engine Optimization e representa uma série de boas práticas para que um site alcance os melhores posicionamentos em rankings de sistemas de busca, como Google, Bing e Youtube.
Convenhamos, estar nas primeiras páginas do Google é extremamente vantajoso. Isso representa acessos, fluxo de usuários constantes, vendas e por aí vai.
“OK, mas aonde entra o protocolo HTTPs nessa história?”
O Google, que é de longe o principal sistema de busca do mundo, recentemente afirmou que sites com HTTPs têm maior relevância em suas buscas. Sim, ter um site seguro é um fator de rankeamento.
Então, se o seu sistema visa estar bem posicionado no Google e em outros mecanismos de busca, usar HTTPS é praticamente uma obrigação.
Portanto, na categoria SEO, ponto para o protocolo HTTPS
Experiência do Usuário (UX)
O protocolo influência na experiência do usuário? Será?
A resposta é sim! Se você parar para observar, dependendo do navegador que você estiver utilizando, alguns sites costumam exibir telas de alerta ou pop-ups informando que o determinado site não é seguro. Muitas vezes esse aviso aparece não porque existe uma ameaça real (como spams e malwares), mas simplesmente pela falta de HTTPS no servidor.
Dessa forma a UX (User Experience) é prejudicada. Ter um feedback como este é ruim. Pense comigo. O usuário irá se sentir prejudicado ao utilizar aquele site, o que pode levá-lo a sair e buscar uma alternativa. Provavelmente o concorrente.
“Na dúvida é melhor não correr riscos, certo?” Isso que pensa o usuário.
Afinal, a maioria dos usuários no mundo não sabem o que são protocolos HTTP. Portanto, pode ter certeza, eles ficarão assustados com qualquer mensagem dizendo que o site não é seguro. Resumo da história, você perderá um possível cliente e o seu site ficará tachado como spammer ou algo pior ainda.
Além de tudo isso, ainda há a questão dos e-commerces. O fato de ter um certificado digital entrega mais credibilidade para o site e confiança para o usuário. Principalmente na hora de inserir os dados do cartão de crédito, não é? Sendo assim, é fácil concluir que utilizar o protocolo HTTP em uma loja virtual prejudica diretamente o lucro de um e-commerce.
Velocidade de carregamento
Chegamos ao calcanhar de aquilos do protocolo HTTPS. A maior limitação do protocolo é a queda brusca no desempenho da comunicação web. Apesar de ser mais seguro, o HTTPS deixa os sites mais lentos. Isso acaba sendo um fator limitante na hora de se optar – ou não – pela tecnologia.
Para driblar esse problema, muitas empresas tem deixado o HTTPS apenas para sistemas críticos, como logins e transações internas. Essa estratégia deu muito certo por muito tempo. Contudo, conforme os dois itens acima (SEO e UX) ilustram, a internet está se moldando para um formato que visa priorizar a segurança do cliente final.
Sendo assim, optar por um site/sistema sem HTTPS, apesar de proporcionar mais velocidade e, por consequência, uma melhor experiência para o usuário. Por outro lado, prejudica a experiência do usuário quando o assunto é confiança e segurança, como vimos no item anterior.
Sendo assim, a não ser que o seu site (ou sistema) precise de muita velocidade, o HTTPS ainda será a melhor opção. Até porque é possível desenvolver sistemas rápidos, mesmo usando o protocolo HTTPS. Não é fácil, mas é possível.
Custos de contratação
Antigamente, os custos de aplicação do HTTPS eram extremamente elevados, principalmente para pequenas empresas. Alguns tipos de certificado precisavam ser renovados anualmente, com valores altos quando comparado com o que as empresas estão acostumadas a investir em segurança. Dessa forma, é fácil dizer que o HTTP era muito mais comum, barato e prático entre os websites do mundo.
Contudo, hoje em dia, graças ao povo da TI, já existem certificados open source. Exato, certificados gratuitos para aplicação e uso! Talvez o principal exemplo seja o Let’s Encrypt que é um projeto da Linux Foundation em parceria com diversos patrocinadores que visam deixar a web mais segura!
Além do certificado gratuito, existem empresas de hospedagem que já estão incluindo o protocolo HTTPS em seus serviços mais básicos (hospedagens de nível I e II, por exemplo).
Portanto, se antes o custo do certificado era um empecilho, atualmente isso não é mais verdade. Claro que os certificados open source são os de nível 1, ou seja, os que proporcionam menor segurança, por assim dizer. Entretanto, para a grande maioria das empresas, isso já será mais do que suficiente. Já, se você gerencia o site ou sistema web de uma aplicação maior e mais robusta, sugerimos a contratação de um certificado HTTPS com um nível de segurança mais elevado.
O veredicto!
Por enquanto, o placar está 3 a 1 a favor do certificado HTTPS, correto? Então, vamos ao veredicto final:
Por mais que o certificado HTTPS deixe a comunicação mais lenta entre client-side e server-side, a utilização desse protocolo promove segurança, melhor experiência para o usuário final e ainda por cima você ganha uns pontinhos no ranking do Google e de outros buscadores. Além de tudo isso, ainda é possível “driblar” a lentidão com um código organizado e otimizado.
Diversas empresas e órgãos que basicamente ditam o futuro da internet já falaram: “Queremos uma internet mais segura”
Portanto, podemos afirmar que, em algum momento, seremos basicamente forçados a migrar do HTTP para o HTTPS. O Google, ao favorecer sites com o certificado de segurança, já está fazendo isso, não concorda? Então, é questão de tempo até que outras empresas da área adotem uma postura semelhante.
Então, para responder a pergunta do início do post, se você estiver em dúvida entre HTTP e HTTPS no seu novo projeto ou manutenção de um sistema antigo, adote o HTTPS! Tenho certeza que você não irá se arrepender.
Espero que você tenha gostado desse artigo e se ficou alguma dúvida, fique a vontade para deixar o seu comentário aqui embaixo. Teremos prazer em responder você. Abraços e até a próxima!