Protocolo HTTP Protocolo de Transferência de Hipertexto O Hypertext Transfer Protocol (HTTP), em português Protocolo de Transferência de Hipertexto, é um protocolo de comunicação (na camada de aplicação segundo o Modelo OSI) É a base para a comunicação de dados da World Wide Web Hipertexto é o texto estruturado que utiliza ligações lógicas (hiperlinks) entre nós contendo texto. O HTTP é o protocolo para a troca ou transferência de hipertexto. Este protocolo tem sido usado pela WWW desde 1990. A primeira versão de HTTP, chamada HTTP/0.9, era um protocolo simples para a transferência de dados no formato de texto ASCII pela Internet, através de um único método de requisição, chamado GET. Protocolo HTTP Protocolo de Transferência de Hipertexto A versão HTTP/1.0 foi desenvolvida entre 1992 e 1996 para suprir a necessidade de transferir não apenas texto. Com essa versão, o protocolo passou a transferir mensagens do tipo MIME44 (Multipurpose Internet Mail Extension) e foram implementados novos métodos de requisição, chamados POST e HEAD. A RFC 2616, de junho de 1999, que definiu o HTTP/1.1. Em Junho de 2014 foram publicados 6 RFC's para maior clareza do protocolo HTTP/1.1. No HTTP/1.1, o protocolo descrito na RFC 2616, foi desenvolvido um conjunto de implementações adicionais ao HTTP/1.0, como por exemplo: o uso de conexões persistentes; o uso de servidores proxy que permitem uma melhor organização do cache; novos métodos de requisições; entre outros. Protocolo HTTP Protocolo de Transferência de Hipertexto Em Março de 2015, foi divulgado o lançamento do HTTP/2. A atualização deixou o navegador com um tempo de resposta melhor e mais seguro. Ele também melhorou a navegação em smartphones. Protocolo HTTP Protocolo de Transferência de Hipertexto O HTTP funciona como um protocolo de requisição-resposta no modelo computacional cliente-servidor. Um navegador web, por exemplo, pode ser o cliente e uma aplicação em um computador que hospeda um site da web pode ser o servidor. O cliente submete uma mensagem de requisição HTTP para o servidor. O servidor, que fornece os recursos, como arquivos HTML e outros conteúdos, ou realiza outras funções de interesse do cliente, retorna uma mensagem resposta para o cliente. A resposta contem informações de estado completas sobre a requisição e pode também conter o conteúdo solicitado no corpo de sua mensagem. Protocolo HTTP Protocolo de Transferência de Hipertexto Um navegador web é um exemplo de agente de usuário (AU). Outros tipos de agentes de usuário incluem o software de indexação usado por provedores de consulta (Web crawler, em português rastreador web, é um programa de computador que navega pela World Wide Web de uma forma metódica e automatizada. Outros termos para Web crawlers são indexadores automáticos, bots, web spiders, Web robot, ou Web scutter.). Navegadores vocais, aplicações móveis e outros software que acessam, consomem ou exibem conteúdo web. Protocolo HTTP Protocolo de Transferência de Hipertexto O principal problema com esta forma de atenticação é que a credenciais do usuário são transmitidas pela rede sem nenhuma proteção. Este problema pode ser resolvido através do uso do protocolo Secury Sockets Layer (SSL) ou outro protocolo de codificação. O protocolo SLL foi introduzido pela Netscape Communications Corporation e é suportado pelos browsers. O protocolo HTTP/1.1 melhorou o mecanismo de autenticação proposto pelo protocolo HTTP/1.0. Ele é baseado no paradgima desafio/resposta no qual o servidor envia um desafio para o browser e o browser usa uma senha armazenada localmente para computar a resposta. Como a senha não é enviada pela rede, o protocolo HTTP/1.1 é muito mais seguro que o protocolo HTTP/1.0 e para isso, introduz uma piora muito pequena no desempenho do sistema. Protocolo HTTP Protocolo de Transferência de Hipertexto HTTPS (HyperText Transfer Protocol Secure) É uma implementação do protocolo HTTP sobre uma camada adicional de segurança que utiliza o protocolo SSL/TLS. Essa camada adicional permite que os dados sejam transmitidos por meio de uma conexão criptografada e que se verifique a autenticidade do servidor e do cliente por meio de certificados digitais. A porta TCP usada por norma para o protocolo HTTPS é a 443. A confiança fornecida pelo HTTPS é baseada em autoridades de certificação que vêm préinstaladas no navegador (isto é equivalente a dizer "Eu confio na autoridade de certificação VeriSign/Microsoft/etc para me dizer em quem devo confiar"). Portanto, uma conexão HTTPS pode ser confiável se e somente se todos os itens são verdade: O usuário confia que o navegador implementa corretamente HTTPS com autoridades de certificação pré-instaladas ; Protocolo HTTP Protocolo de Transferência de Hipertexto O usuário confia que as autoridades verificadoras só irão confiar em páginas legítimas, que não possuem nomes enganosos; A página acessada fornece um certificado válido, o que significa que ele foi assinado por uma autoridade de certificação confiável; O certificado identifica corretamente a página (por exemplo, quando o navegador acessa "https://exemplo.com", o certificado recebido é realmente de "Exemplo Inc." e não de alguma outra entidade). Ou o tráfego na internet é confiável, ou o usuário crê que a camada de encriptação do protocolo TLS/SSL é suficientemente segura contra escutas ilegais Protocolo HTTP Protocolo de Transferência de Hipertexto Adquirindo certificados Certificados assinados por autoridades podem ser de graça ou ter um custo anual. Organizações podem também ter sua própria autoridade de certificação, particularmente se são responsáveis por configurar navegadores para acessar suas próprias páginas (por exemplo, páginas de uma rede interna ou de uma grande universidade). Elas podem facilmente adicionar cópias de seus próprios certificados na lista de certificados distribuída no navegador. Protocolo HTTP Protocolo de Transferência de Hipertexto Diferenças para o HTTP As URLs HTTPS começam com "https://" e utilizam a porta 443 como padrão, enquanto as URLs HTTP começam com "http://" e utilizam a porta 80 como padrão. HTTP é inseguro e sujeito a ataques de homem-no-meio e escutas ilegais, que podem levar a atacantes ganharem acesso a contas de páginas na web e a informações sensíveis. O HTTPS foi projetado para proteger contra esses ataques e é considerado seguro contra eles (com exceção de versões mais antigas e obsoletas do SSL). Protocolo HTTP Protocolo de Transferência de Hipertexto