Protocolo HTTP Protocolo de Transferência de Hipertexto História O HyperText Transfer Protocol é um protocolo de aplicação responsável pelo tratamento de pedidos e respostas entre cliente e servidor na World Wide Web. Ele surgiu da necessidade de distribuir informações pela Internet e para que essa distribuição fosse possível foi necessário criar uma forma padronizada de comunicação entre os clientes e os servidores da Web. Com isso, o protocolo HTTP passou a ser utilizado para a comunicação entre computadores na Internet e a especificar como seriam realizadas as transações entre clientes e servidores, através do uso de regras básicas. Protocolo HTTP Protocolo de 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. 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. Protocolo HTTP Protocolo de Transferência de Hipertexto No HTTP/1.1, versão atual do 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 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 : Categoria Descrição Código Descrição 1-- Informational 100 Continue 101 Switching protocols 200 Ok 201 Created 202 Accepted 203 Non-authoritive information 300 Multiple choices 301 Moved permanently 302 Moved temporarily 400 Bad request 401 Unauthorized 402 Payment required 403 Forbidden 404 Not found 415 Unsupported media type 426 Upgrade Required 500 Internal server error 501 Not implemented 502 Bad gateway 503 Service unavailable 505 HTTP version not supported 2-- 3-- 4-- 5-- Success Redirection Client error Server error 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. Protocolo HTTP Protocolo de Transferência de Hipertexto 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 ; 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 Integração com o navegador Muitos navegadores mostram um aviso se recebem um certificado inválido. Navegadores mais antigos, quando se conectam a uma página com um certificado inválido, mostravam ao usuário um aviso em uma caixa de diálogo e perguntavam se ele desejava continuar. Navegadores mais recentes mostram o aviso preenchendo a janela inteira e também exibem as informações de segurança da página na barra de endereços. Certificados de validação estendida tornam verde a barra de endereço em navegadores mais recentes. Protocolo HTTP Protocolo de Transferência de Hipertexto 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. Existe também uma autoridade de certificação ponto-a-ponto, a CACert 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