Programação Web Aula 1: Introdução · Aula 1: Introdução Bruno Müller Junior Departamento de...

27

Transcript of Programação Web Aula 1: Introdução · Aula 1: Introdução Bruno Müller Junior Departamento de...

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Programação WebAula 1: Introdução

Bruno Müller Junior

Departamento de Informática

UFPR

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

1 Histórico2 Modelo

Navegadores (Cliente)Servidores

Funcionamento de ServidoresCaracterísticas de Servidores

URL3 HTTP

FuncionamentoRequest PhaseExemplo de request com HEAD

Exemplo 2

Response PhaseExemplo de Resposta de GETLinha de estado

Conexão4 Segurança

AspectosPrivacidade e IntegridadeAutenticaçãoAutenticaçãoOutros Problemas

5 Ferramentas6 Disciplina

Organização

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Histórico

Internet1960 - ArpanetDe�nição: Conjunto de computadores conectados em rede.Protocolo Principal: TCP/IP.Endereçamento XXX.XXX.XXX.XXX Exemplo: 10.254.0.4 .Nomes de Domínio (Mapeamento nome em endereços IP).

World Wide Web1989 - Protocolo desenvolvido no CERN (Suíça) pelo grupo deTim Berners-Lee.Busca de arquivos formatados como hipertextos, que sãotextos com links para outros arquivos.Unidades de Informação recebem vários nomes: Páginas,Documentos, Recursos.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Modelo

Modelo Cliente Servidor na Web:O cliente é responsável para renderização, que em alguns casosimplica em um considerável custo computacional;As tarefas do servidor normalmente requerem pouco podercomputacional. Com esta divisão de tarefas, um mesmoservidor pode responder a muitos clientes.

Figura : www3.ntu.edu.sg/home/ehchua/programming/webprogramming/http_basics.htmlBruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Navegadores (Cliente)

Navegadores (Cliente)

Cliente web que, numa análise minimalista:inicia a comunicação com o servidor Web;aguarda documento enviado pelo servidor;formata documento para apresentação.

outras tarefas incluem realizar cálculos, aguardar digitação dousuário entre outras.

Linguagens/Protocolos: HTML, CSS, Javascript, ...

Primeiro navegador grá�co: Mosaic - 1993.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Servidores

Servidores

Programas passivos que retornam os documentos solicitadospelos clientes.

Levantamento do uso de servidores (Fev/2016):http://news.netcraft.com/archives/2016/02/22/

february-2016-web-server-survey.html

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Funcionamento de Servidores

Funcionamento de Servidores

Ao ser iniciado, o processo servidor informa ao S.O. que estáapto a receber mensagens de uma porta especí�ca (porexemplo, Apache na porta 80).

Ao chegarem msgs para aquela porta, o S.O. as encaminha aoservidor.Para cada mensagem recebida, o servidor:

analisa o comando HTTP enviado (e dados se houverem);executa os comandos especi�cados, ou seja:

acessa arquivos;dispara processos para tratar a mensagem (como em PHP,rails, Java Web Software, etc.);envia resposta ao cliente.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Características de Servidores

Características de Servidores

Estrutura de Arquivos:document root: o diretório (no sistema de arquivos doservidor) de onde o servidor web irá retornar a maior parte desuas páginas web. No apache, /var/www/server root: diretório onde estão os arquivos do servidor assimcomo os outros executáveis.mapeamento:http://www.tunias.com/topdocs/petunias.html →/var/www/topdocs/petunias.html.virtual hosts: servidores que suportam mais de um host.proxy server : servidores que retornam documentos de outrasmáquinas web.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

URL

URL

formato geral: scheme:object-addressscheme é o protocolo de comunicação. Exemplos: http, ftp,gopher, file, mailto, news.Exemplos:

http://fully-quali�ed-name/path-to-document�le://path-to-document

Caracteres especiais:Não pode conter espaços. Para �emular� o espaço, usa-se osímbolo %XX, sendo XX o valor hexadecimal (20 para espaço).Exemplo: San%20Jose = San Jose.Para tratamento de outros símbolos, vejahttp://www.w3.org/Addressing/URL/URI_Overview.html

No protocolo HTTP, quando o arquivo não é especi�cado, oservidor retorna o arquivo index.html (se houver).

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

HTTP

HTTP : Hypertext Transfer ProtocolVersão atual: 1.1, de�nido no RFC 2616, de junho 1999.o protocolo HTTP está na camada de aplicação do modelo OSI.Usa TCP/IP.O protocolo HTTP consiste de duas fases: Request e Response.

Figura : www3.ntu.edu.sg/home/ehchua/programming/webprogramming/http_basics.html

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Funcionamento

Funcionamento

Cada mensagem entre o cliente e o servidor consiste de pelomenos duas partes: header (infos sobre a mensagem) e body

(infos sobre os dados).

Figura : www3.ntu.edu.sg/home/ehchua/programming/webprogramming/http_basics.html

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Request Phase

Request Phase

Formato geral de uma mensagem de requisição:método HTTP;campos do cabeçalho;linha em branco;corpo da mensagem (opcional).

Método DescriçãoGET Retorna o conteúdo do documento especi�cadoHEAD Retorna o cabeçalho do documento espe�cadoPOST Executa o documento especi�cado, usando dados contidosPUT Substitui documento especi�cado com os dados contidos

DELETE Apaga o documento especi�cado

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Exemplo de request com HEAD

Exemplo de request com HEAD

É possível ver como os métodos funcionam usando o programatelnet. Exemplo 1: HEAD:> telnet condor httpTrying 10.254.251.162...Connected to condor.c3local.Escape character is '^]'.HEAD /index.html HTTP/1.1HTTP/1.1 200 OKDate: Mon, 22 Jul 2013 18:19:55 GMTServer: Apache/2.2.22 (Ubuntu)Last-Modified: Wed, 24 Apr 2013 23:40:52 GMTETag: "b2a79-b1-4db23d5136900"Accept-Ranges: bytesContent-Length: 177Vary: Accept-EncodingConnection: closeContent-Type: text/html

Connection closed by foreign host.>

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Exemplo 2

Exemplo 2

Exemplo 2: GET:> telnet condor httpTrying 10.254.251.162...Connected to condor.c3local.Escape character is '^]'.GETHTTP/1.1 200 OKDate: Mon, 22 Jul 2013 18:18:12 GMTServer: Apache/2.2.22 (Ubuntu)Last-Modified: Wed, 24 Apr 2013 23:40:52 GMTETag: "b2a79-b1-4db23d5136900"Accept-Ranges: bytesContent-Length: 177Vary: Accept-EncodingConnection: closeContent-Type: text/html

<html><body><h1>It works!</h1><p>This is the default web page for this server.</p><p>The web server software is running but no content has been added, yet.</p></body></html>Connection closed by foreign host.>

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Response Phase

Response Phase

Corresponde à mensagem de resposta do servidor para ocliente;Formato geral de uma mensagem de resposta:

linha de estado (Status Line);campos do cabeçalho;linha em Branco;corpo da resposta;

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Exemplo de Resposta de GET

Exemplo de Resposta de GET

> telnet condor httpTrying 10.254.251.162...Connected to condor.c3local.Escape character is '^]'.GETHTTP/1.1 200 OKDate: Mon, 22 Jul 2013 18:18:12 GMTServer: Apache/2.2.22 (Ubuntu)Last-Modified: Wed, 24 Apr 2013 23:40:52 GMTETag: "b2a79-b1-4db23d5136900"Accept-Ranges: bytesContent-Length: 177Vary: Accept-EncodingConnection: closeContent-Type: text/html

<html><body><h1>It works!</h1><p>This is the default web page for this server.</p><p>The web server software is running but no content has been added, yet.</p></body></html>Connection closed by foreign host.>

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Linha de estado

Linha de estado

No exemplo, HTTP/1.1 200 OK

Faixas de valores:100-199 Informacional: em processamento200-299 Sucesso300-399 Redirecionamento400-499 Erro do cliente500-599 Erro no servidor

Alguns retornos comuns:200 : OK404 : Not Found

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Conexão

Conexão

Antes da versão 1.1, o servidor fechava a conexão ao enviarresposta;

Default da versão 1.1, é que o servidor �que aberto por umcurto espaço de tempo, o que melhora o desempenho demúltiplas requisições do cliente.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Segurança

O modelo cliente-servidor adotado na Web apresenta algunsproblemas potenciais tanto no cliente quanto no servidor.No Servidor:

Através de url especí�cas, é possível acessar dados (talvezprivados) no do servidor (por exemplo, acesso a BD);Através de url especí�cas, é possível desencadear a execuçãode alguma tarefa (talvez danosa) no servidor;

No Cliente:O servidor pode enviar dados que implicam na execução detarefas, ou até acesso a dados privados na máquina cliente;

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Aspectos

Aspectos

Considere uma aplicação Web onde o cliente transmite dadospara o servidor. Para um efeito mais dramático, consideredados do cartão de crédito.

Os aspectos de segurança que devem ser observados aqui são:

Privacidade Não pode ser lido no caminho ao servidor.Integridade Não pode ser modi�cado no caminho ao servidor.

Autenticação Tanto comprador quanto vendedor devem estarcertos da identidade do outro;

Legalidade É necessário poder provar legalmente que amensagem foi enviada e recebida.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Privacidade e Integridade

Privacidade e Integridade

Estes dois aspectos estão relacionados com o envio de dadosque passam por várias máquinas até atingir seu destino. Oobjetivo é impedir a leitura ou a alteração destes dados notrajeto.

A ferramenta básica para garantir estes aspectos é acriptogra�a, onde um lado criptografa a mensagem quesomente o outro lado é capaz de decriptografar.

Ferramenta básica: criptogra�a utilizando criptogra�a dechave pública (public-key encriptation, Di�e e Hellman, 1976).

algoritmo mais usado: RSA (Rivest, Shamir, Adleman, 1977).

sugestão de leitura: The Code Book: The Science of Secrecyfrom Ancient Egypt to Quantum Cryptography, Simon Singh;

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Autenticação

Autenticação

O ambiente cliente-servidor proporciona vários problemas paraque a identidade do cliente e do servidor sejam autenticados.

Ambiente: um servidor sem estado e vários clientes.

Problema: como identi�car o cliente.

Exemplo: aplicação onde cada cliente tem �poderes�diferentes. Exemplo: médico, enfermeira, paciente.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Autenticação

Autenticação

Se o servidor não mantém estado (ou seja, esquece tudo o queocorreu a cada mensagem respondida), como �lembrar� quemé quem?

Solução adotada: cookies, um adendo ao protocolo HTTPonde o servidor cria um string (o cookie) e envia ao cliente.Cada mensagem do cliente deve anexar o cookie para que oservidor saiba quem é o cliente.

Forma de usar típica: guardar o cookie em uma tabelaindexada pelo cookie, e armazenar naquela entrada asinformações daquele cliente.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Outros Problemas

Outros Problemas

Tentativas de destruição ou de inviabilizar acesso a dados emservidores:

Virus;Worms;DoS (Denial of Service);Rootkits.

Esta é uma área onde novas tentativas de �ataque� gerampesquisas de defesa. Um ciclo que não parece ter um �m embreve.

Esta disciplina não irá abordar a área de segurança.

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Ferramentas

Ferramentas básicas para programação WebFerramentas do Cliente:

XHTML / XML / SGMLJavascript / Ajax / Jquery

Ferramentas do Servidor:ServletsPHP.NETRails

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Disciplina

Objetivo Prover conhecimentos sobre as principais ferramentasde programação Web.

Método Uma aula teórica e uma prática por semana.Avaliação Trabalhos Práticos.

Bibliogra�a Livro Texto: Programming the World Wide Web,Robert Sebesta. Procurar a edição mais recente.http://www.w3schools.com/

Metaprogramming Ruby: Program Like the RubyPros, Paolo Perrotta.http:

//aprendaaprogramar.rubyonrails.com.br/

Agile Web Development with Rails, Sam Ruby.Máquina disponibilizada �litorina.c3sl.ufpr.br�

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução

Histórico Modelo HTTP Segurança Ferramentas Disciplina

Organização

Organização

Semana 1 - 2 XHTML5 / CSS3 / XML

Semana 3 - 4 Ruby

Semana 5 - 6 Javascript / Ajax / Jquery

Semana 7 Java Web Software

Semana 8 - 10 Rails

Semana 10- 15 Dúvidas

Bruno Müller Junior Departamento de Informática UFPR

Programação Web Aula 1: Introdução