Java NET: Interaja com a Internet - DCC

Transcrição

Java NET: Interaja com a Internet - DCC
Java NET:
Interaja com a Internet
Ricardo Terra
rterrabh [at] gmail.com
Ricardo Terra (rterrabh [at] gmail.com)
Java NET: Interaja com a Internet
Maio, 2011
1
CV
Nome: Ricardo Terra
Email: rterrabh [at] gmail.com
www: ricardoterra.com.br
Twitter: rterrabh
Lattes: lattes.cnpq.br/ 0162081093970868
Ph.D. (UFMG/UWaterloo),
Post-Ph.D. (INRIA/Université Lille 1)
Background
Acadêmico: UFLA (desde 2014), UFSJ (1 ano), FUMEC (3 anos), UNIPAC (1 ano), FAMINAS (3 anos)
Profissional: DBA Eng. (1 ano), Synos (2 anos), Stefanini (1 ano)
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
2
Objetivo do Mini-curso
§ 
Entendendo o Funcionamento da Web
§  HTTPS
§ 
Entendendo File e Stream
§ 
API Java Net
§  Baixar o conteúdo de um recurso (página, imagem etc)
§  Submeter formulários
§ 
Ataque por Força Bruta
§ 
Desenvolvimento de Aplicações
§  MyDownload
§  MyPageChecker
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
3
Entendendo o
Funcionamento da Web
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
4
Funcionamento da Web – HTTP e HTML
§ 
A maioria das conversas que ocorre na web entre clientes e
servidores são mantidas através do protocolo HTTP, que
possibilita conversas de requisição e resposta
§ 
O cliente envia uma requisição HTTP e o servidor retorna uma
resposta HTTP
§ 
§ 
Enfim, se você é um servidor web você fala HTTP
Portanto, uma conversação HTTP é uma sequência de
requisição/resposta
§ 
Isto é, o cliente pede uma coisa, o servidor responde, o cliente pede
outra coisa, o servidor responde...
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
5
Funcionamento da Web
§ 
Requisição e resposta:
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
6
Cliente e Servidor / HTTP e HTML
§ 
Quando um servidor responde a uma solicitação, ele geralmente
envia algum tipo de conteúdo para o browser, para que esse
possa exibí-lo
§ 
§ 
O formato HTML é o formato mais comum enviado como resposta
para um cliente pelo Servidor, pois esse é facilmente lido pelo
browser no cliente
Informação presente no content-type no cabeçalho HTTP
§  text/html!
§  text/plain!
§  application/pdf!
§  image/jpeg!
§  ... !
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
7
Cliente e Servidor / HTTP e HTML
§ 
O HTTP é um protocolo da camada de aplicação que tem
características específicas para a web, mas ele depende de toda
a arquitetura TCP/IP para garantir que tanto a solicitação e
quanto a resposta sejam transmitidas entre o cliente e o servidor
TOPO DO TCP/IP
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
8
Requisição e resposta
§ 
Principais elementos do fluxo de requisição:
§ 
§ 
§ 
§ 
método HTTP
endereço da página (URL) que está sendo acessada
parâmetros do formulário
Principais elementos do fluxo de resposta:
§ 
cabeçalho
§ 
§ 
§ 
§ 
código de status
Método HTTP
tipo do conteúdo (texto, imagem, HTML...)
conteúdo (o texto, a imagem, o HTML...)
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
9
Requisição e resposta
§ 
Requisição HTTP
§ 
A primeira coisa que você encontrará é o nome do método HTTP
§ 
§ 
O nome do método informa ao servidor o tipo de solicitação que está
sendo feita e como o resto da mensagem será formatada.
O protocolo HTTP possui diversos métodos, mas usaremos e
aprenderemos os mais comuns: GET e POST
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
10
Requisição e resposta
§ 
Método GET
§ 
É o método mais simples do HTTP e seu principal trabalho é pedir
um recurso
§ 
Pode ser qualquer tipo de recurso: uma página, uma imagem, um PDF,
etc
§ 
O caminho até o recurso e quaisquer parâmetros adicionados à
URL serão incluídos na própria barra de endereços
§ 
Podemos usar o GET para formulários, porém com desvantagens:
§ 
§ 
O total de caracteres do GET é limitado
Os dados que você envia utilizando HTTP GET são anexados à URL,
portanto, seja o que for que você estiver transmitindo, ficará exposto
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
11
Requisição e resposta
§ 
Método POST
§ 
É um método mais poderoso. É um GET++. Com o POST, você
pode solicitar algo e, ao mesmo tempo, enviar os dados de um
formulário para o servidor
§ 
Os dados a serem enviados ao servidor estão localizados na carga
útil (payload) da mensagem e podem ser bem extensos
Pacote IPv4
§ 
Por isto, o POST é considerado mais seguro que o GET
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
12
Requisição e resposta
§ 
Enfim, para acesso a recursos utiliza-se GET e aplicações que
utilizam formulários utiliza-se POST
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
13
Requisição e resposta
§ 
Resposta HTTP
§ 
uma resposta HTTP é composta de um cabeçalho (header) e o
corpo
§ 
§ 
§ 
o cabeçalho informa ao browser o método que está sendo utilizado, se
a solicitação obteve êxito (código) e o tipo de conteúdo está incluído no
corpo
corpo possui o conteúdo (por exemplo, HTML) que o browser exibirá
o código pode ser:
§ 
§ 
§ 
§ 
§ 
1xx: Informativa: requisição recebida, processo em continuidade…
2xx: Sucesso: a ação foi recebida, entendida e aceita com sucesso
3xx: Redirecionamento: ação futura ainda deve ser tomada para
completar a requisição
4xx: Erro no cliente: requisição contém sintaxe incorreta ou não pode
ser resolvida
5xx: Erro no servidor: O servidor falhou ao responder uma aparente
requisição válida
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
14
HTTPS
§ 
E o HTTPS? Se utilizarmos, nossa aplicação é segura?!
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
15
Entendendo File e Stream
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
16
API Java Net
§ 
§ 
Antes de entrarmos na API Java Net, os seguintes pré-requisitos
devem ser abordados:
§ 
Classe File
§ 
Streams
Assim, esta seção apresenta uma visão geral desses assuntos
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
17
Classe java.io.File!
§ 
Classe responsável em realizar métodos em arquivos físicos.
Para se construir um objeto do tipo File, deve saber o nome
completo do arquivo. Caso o arquivo esteja na raiz do
workspace pode apenas passar o nome do arquivo
§ 
Caso se passe o nome de um arquivo que não existe, este é
criado na primeira necessidade
§ 
Exemplo:
§ 
§ 
§ 
§ 
new
new
new
new
File("C:\\pasta\\meuArquivo.txt")!
File("meuArquivoNoWorkspace.txt")!
File(”/dev/etc/xpto.txt”)!
File(”/bin")!
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
18
Classe java.io.File
§ 
Trabalhando com um arquivo:
File fileTexto = new File("arquivoTexto.txt");!
!System.out.println("Nome do arquivo: " + fileTexto.getName());
!
!System.out.println("O arquivo existe? " + fileTexto.exists());
!
!System.out.println(”Diretório? " + fileTexto.isDirectory());!
!if (fileTexto.isFile()) {!
!
!System.out.println("É um arquivo do diretório: " !
!
!
!+ fileTexto.getAbsolutePath());!
!}!
!System.out.println("Posso ler? " + fileTexto.canRead());!
!System.out.println("Posso
escrever?
"
+
fileTexto.canWrite());!
§ 
Enfim, classe File não manipula arquivos...
§ 
!
Então, quem manipula?! Streams...
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
19
Streams
§ 
Java fornece uma interface consistente ao programador,
independente do dispositivo real que é acessado
§ 
Essa abstração é chamada stream e o dispositivo real
pode ser:
§  arquivo (file)
§  impressora
§  socket
§  Internet
§  …
§ 
Em outras palavras, você trabalha com qualquer
dispositivo do mesmo modo (com certas limitações)
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
20
Streams
§ 
Basicamente, existem dois principais tipos de streams:
§  stream de texto
§  Manipula caracteres
§  Leitura: Reader!
§  Escrita: Writer!
§ 
stream binário
§  Manipula bytes
§  Leitura: InputStream!
§  Escrita: OutputStream
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
21
Streams!
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
22
Streams
§ 
Devido ao foco do curso, não colocarei exemplos de uso
§ 
O conhecimento necessário será absorvido durante as
explicações da próxima seção (on-the-fly)
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
23
API Java Net
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
24
API Java Net
§ 
API completa desenvolvida pela Oracle / Sun para acessos
à Internet
§ 
Com essa API podemos:
§  Buscar recursos web (página HTML, por exemplo)
§  Submeter formulários
§ 
Nos próximos slides veremos alguns exemplos básicos da
utilização dessa API
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
25
API Java Net
§ 
Acessando um site
§  Lendo do InputStream da URLConnection!
§ 
Projeto JavaNet: com.terra.exemplos.RecursoHTML!
§ 
O conteúdo retornado é uma HTML, isto é, texto!
§ 
Logo, qual o papel de um browser?
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
26
API Java Net
§ 
Só com o que já sabemos, podemos baixar qualquer
conteúdo e salvá-lo em disco (espécie de um programa de
download)
§ 
Baixando um recurso (imagem ou pdf, por exemplo):
§  Lendo do InputStream da URLConnection
§  Escrevendo no OutputStream de um arquivo!
§ 
Projeto JavaNet: com.terra.exemplos.SalvarRecurso!
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
27
API Java Net
§ 
Submetendo um formulário
§  Descobrir url do formulário e nome dos seus campos
§ 
Antes da submissão
§ 
§ 
§ 
Uso de URLEncoder para passagem de parâmetros
Escrita no OutputStream da URLConnection!
Depois da submissão
§ 
Lendo do InputStream da URLConnection!
§  Projeto JavaNet: com.terra.exemplos.Formulario!
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
28
Ataque por Força Bruta
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
29
Força Bruta
§ 
Tentar todas as possibilidades...
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
30
Força Bruta
§ 
Exemplo Motivador: SINEF
§ 
Técnicas para evitar
§  Limite de Tentativas
§ 
§ 
Tempo de Ociosidade
§ 
§ 
Você utilizou 5 tentativas. Usuário bloqueado.
Você utilizou 5 tentativas. Usuário bloqueado por 30 minutos.!
Imagem
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
31
Força Bruta
§ 
Como fazer?
§  Descobrir o formulário e o nome do seus campos
§  Bolar um algoritmo para gerar todas as combinações
§  Ir tentando…
§ 
§ 
Tome cuidado que é possível descobrí-lo pelo seu IP
Não use para o mal:
§  www.peladeiro.com.br
§  qualquer outro... deixo com vocês...
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
32
Desenvolvimento de Aplicações
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
33
Desenvolvimento de Aplicações
§ 
Acho que já foi possível notar que o mais legal da API
Java Net não é acessar à Internet, mas sim, as aplicações
que pode gerar
§ 
Nesta seção, faremos a criação de dois aplicativos:
§  MyDownload
§  Programa para fazer download pela Internet
§ 
MyPageChecker
§  Programa para verificar se houve alterações em
uma determinada página
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
34
Desenvolvimento de Aplicações
§ 
MyDownload
§  Programa para fazer download pela Internet
§ 
Algo como:
§ 
Pacotes:
§ 
com.terra.mydownload.{thread,gui,main}!
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
35
Desenvolvimento de Aplicações
§ 
MyPageChecker
§  Programa para verificar se houve alterações em uma
determinada página
§ 
Algo como:
§ 
Pacotes:
§ 
com.terra.mypagechecker.{thread,gui,main}!
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
36
Considerações Finais
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
37
Considerações Finais
§ 
Use para o BEM!!!
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
38
Dúvidas?
???
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
39
Obrigado!
Ricardo Terra
rterrabh [at] gmail.com
Apresentação e projeto Java disponíveis em:
www.ricardoterra.com.br/palestras
Principais referências bibliográficas:
HORSTMANN, C; CORNELL, G. Core Java: Volume 1 – Fundamentos.
8 ed. São Paulo: Pearson, 2010.
DEITEL, P; DEITEL, H. Java: Como Programar. 8 ed. São Paulo:
Pearson, 2010.
Ricardo Terra (rterrabh [at] gmail.com) Java NET: Interaja com a Internet
Maio, 2011
40

Documentos relacionados