Por que o HTTP não é seguro? | HTTP x HTTPS

As solicitações e as respostas HTTP são enviadas em texto simples, o que significa que qualquer pessoa pode lê-los. O HTTPS corrige esse problema usando a criptografia TLS/SSL.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Entenda como funciona o HTTP
  • Saiba por que o HTTP não é seguro
  • Explique as diferenças entre HTTP e HTTPS
  • Saiba como obter um certificado SSL para o HTTPS

Copiar o link do artigo

HTTP x HTTPS: Quais são as diferenças?

HTTPS é o HTTP com criptografia. A única diferença entre os dois protocolos é que o HTTPS usa TLS (SSL) para criptografar solicitações e respostas HTTP normais. Assim, o HTTPS é muito mais seguro do que o HTTP. Um site que usa HTTP tem http:// em sua URL, enquanto um site que usa HTTPS tem https://.

HTTP x HTTPS

O que é HTTP?

HTTP significa Protocolo de Transferência de Hipertexto, e é um protocolo - ou uma ordem e uma sintaxe prescritas para apresentar informações - usado para transferir dados por uma rede. A maioria das informações enviadas pela internet, incluindo o conteúdo de sites e as chamadas de API, utiliza o protocolo HTTP. Há dois tipos principais de mensagens HTTP: solicitações e respostas.

No modelo OSI (veja O que é o modelo OSI?), HTTP é um protocolo de camada 7 .

O que é uma solicitação HTTP? O que é uma resposta HTTP?

As solicitações HTTP são geradas por um navegador do usuário à medida que este interage com as propriedades da web. Por exemplo, se um usuário clicar em um hiperlink, o navegador enviará uma série de solicitações "HTTP GET" para o conteúdo que aparece naquela página. Se alguém do digitar no Google "O que é HTTP?" e este artigo aparecer nos resultados da pesquisa, ao clicar no link, seu navegador criará e enviará uma série de solicitações HTTP a fim de obter as informações necessárias para renderizar a página.

Essas solicitações HTTP são todas enviadas para um servidor de origem ou para um servidor proxy de armazenamento em cache, e esse servidor irá gerar uma resposta HTTP. As respostas HTTP são respostas às solicitações HTTP.

Como é uma solicitação HTTP típica?

Uma solicitação HTTP é apenas uma série de linhas de texto que seguem o protocolo HTTP. Uma solicitação GET pode se parecer com o seguinte:


GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en

Essa seção de texto, gerada pelo navegador do usuário, é enviada pela internet. O problema é que ela é enviada exatamente assim, em texto simples que qualquer pessoa que monitore a conexão pode ler. (Aqueles que não estão familiarizados com o protocolo HTTP podem achar este texto difícil de entender, mas qualquer pessoa com um conhecimento básico dos comandos e sintaxes do protocolo pode lê-lo facilmente).

Isto é um problema principalmente quando os usuários enviam dados sensíveis por meio de um site ou de um aplicativo web. Esses dados sensíveis podem ser uma senha, um número de cartão de crédito ou quaisquer outros dados inseridos em um formulário, e no HTTP todos estes dados são enviados em forma de texto simples para que qualquer pessoa os leia. (Quando um usuário envia um formulário, o navegador traduz isso em uma solicitação HTTP POST em vez de uma solicitação HTTP GET).

Quando um servidor de origem recebe uma solicitação HTTP, ele envia uma resposta HTTP, que é semelhante a:


HTTP/1.1 200 OK
Date: Wed, 30 Jan 2019 12:14:39 GMT
Server: Apache
Last-Modified: Mon, 28 Jan 2019 11:17:01 GMT
Accept-Ranges: bytes
Content-Length: 12
Vary: Accept-Encoding
Content-Type: text/plain

Hello World!

Se um site usa HTTP em vez de HTTPS, todas as solicitações e respostas podem ser lidas por qualquer pessoa que esteja monitorando a sessão. Basicamente, um ator malicioso pode simplesmente ler o texto da solicitação ou da resposta e saber exatamente quais informações alguém está pedindo, enviando ou recebendo.

O que é HTTPS?

O S em HTTPS significa "seguro." O HTTPS usa TLS (ou SSL) para criptografar solicitações e respostas HTTP, portanto, no exemplo acima, em vez do texto, um invasor veria vários caracteres aparentemente aleatórios.

Em vez de:


GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en

O invasor vê algo como:


t8Fw6T8UV81pQfyhDkhebbz7+oiwldr1j2gHBB3L3RFTRsQCpaSnSBZ78Vme+DpDVJPvZdZUZHpzbbcqmSW1+3xXGsERHg9YDmpYk0VVDiRvw1H5miNieJeJ/FNUjgH0BmVRWII6+T4MnDwmCMZUI/orxP3HGwYCSIvyzS3MpmmSe4iaWKCOHQ==

No HTTPS, como o TLS/SSL criptografa as solicitações e respostas HTTP?

O TLS utiliza uma tecnologia chamada criptografia de chave pública: existem duas chaves, uma chave pública e uma privada, e a chave pública é compartilhada com os dispositivos do cliente por meio do certificado SSL do servidor. Quando um cliente abre uma conexão com um servidor, os dois dispositivos usam a chave pública e a privada para concordar com novas chaves, chamadas chaves de sessão, para criptografar outras comunicações entre eles.

Todas as solicitações e respostas HTTP são então criptografadas com essas chaves de sessão, de modo que qualquer um que intercepte as comunicações só possa ver uma sequência aleatória de caracteres e não o texto simples.

Para saber mais sobre como a criptografia e as chaves funcionam, veja O que é criptografia?

Como o HTTPS ajuda a autenticar servidores web?

Autenticação significa verificar se uma pessoa ou máquina é quem ela afirma ser. No HTTP, não há verificação de identidade: ele se baseia em um princípio de confiança. Os arquitetos do HTTP não tomaram necessariamente a decisão de confiar implicitamente em todos os servidores web; eles simplesmente tinham outras prioridades além da segurança na época. Mas, na internet moderna, a autenticação é essencial.

Assim como uma carteira de identidade confirma a identidade de uma pessoa, uma chave privada confirma a identidade do servidor. Quando um cliente abre um canal com um servidor de origem (por exemplo, quando um usuário navega para um site), a posse da chave privada que combina com a chave pública no certificado SSL de um site prova que o servidor é, na verdade, o legítimo host do site. Isto evita ou ajuda a bloquear uma série de ataques que são possíveis quando não há autenticação, tais como:

Como a Cloudflare possibilita que os sites adotem o HTTPS?

A Cloudflare lançou o Universal SSL em 2014 e foi a primeira empresa a tornar os certificados SSL gratuitos. Qualquer site que esteja inscrito nos serviços da Cloudflare pode habilitar o HTTPS e abandonar o HTTP com um clique. Isso torna a criptografia TLS amplamente disponível, para proteger usuários e dados de usuários em toda a internet.

Para saber mais sobre HTTP x HTTPS, veja O que é conteúdo misto? Para testar se um site oferece HTTPS, visite o Cloudflare Diagnostic Center.