1 00:00:07,857 --> 00:00:10,402 No desenvolvimento de uma aplicação web, 2 00:00:10,402 --> 00:00:14,900 uma das principais coisas que vamos ter é o HTTP, 3 00:00:14,900 --> 00:00:19,027 ele é basicamente a base de tudo o que nós fazemos. 4 00:00:19,027 --> 00:00:23,648 E veja, não estamos falando aqui só de aplicação para o navegador, 5 00:00:23,648 --> 00:00:27,574 o HTTP também está embarcado em aplicações mobile 6 00:00:27,574 --> 00:00:32,824 e mesmo alguns sistemas que nós pensamos que foram desenvolvidos 7 00:00:32,824 --> 00:00:34,486 com a estrutura compilada. 8 00:00:34,486 --> 00:00:36,976 Isso porque ele trabalha muito bem 9 00:00:36,976 --> 00:00:40,845 com essa ideia de interação cliente-servidor. 10 00:00:40,845 --> 00:00:44,002 Muito disso se deve aos seus métodos. 11 00:00:44,002 --> 00:00:46,171 E aí podemos destacar os principais, 12 00:00:46,171 --> 00:00:50,391 que são o GET, que eu obtenho informação, 13 00:00:50,391 --> 00:00:54,219 o POST, que eu publico uma informação, 14 00:00:54,219 --> 00:00:59,781 PUT, eu adiciono uma informação para alguém que já existe. 15 00:00:59,781 --> 00:01:04,281 No caso, por exemplo, um usuário ou um campo que já está determinado. 16 00:01:04,281 --> 00:01:07,241 E DELETE onde eu mando remover alguém. 17 00:01:07,241 --> 00:01:09,474 Foi justamente essa estrutura 18 00:01:09,474 --> 00:01:13,058 que moldou todo o mercado de TI que conhecemos hoje em dia, 19 00:01:13,058 --> 00:01:15,679 principalmente nas aplicações web. 20 00:01:15,679 --> 00:01:17,452 É através deles que conseguimos 21 00:01:17,452 --> 00:01:20,393 enviar, receber ou alterar algum dado 22 00:01:20,393 --> 00:01:22,985 nos sistemas que usamos no dia a dia. 23 00:01:22,985 --> 00:01:25,645 Mas eles não estão sozinhos, 24 00:01:25,645 --> 00:01:27,840 em especial porque o HTTP 25 00:01:27,840 --> 00:01:30,344 normalmente tem um problema de segurança. 26 00:01:30,344 --> 00:01:33,428 Esses dados estão expostos na rede, 27 00:01:33,428 --> 00:01:36,979 disponíveis para qualquer hacker poder acessar. 28 00:01:36,979 --> 00:01:40,665 Justamente por isso que veio o HTTPS, 29 00:01:40,665 --> 00:01:44,611 onde temos a parte de segurança sendo implementada. 30 00:01:44,611 --> 00:01:46,111 E é nele, por exemplo, 31 00:01:46,111 --> 00:01:50,865 que ganhamos a criptografia dos dados que estamos operando. 32 00:01:50,865 --> 00:01:56,067 E aqui também vamos ter que ter alguns detalhes a nos atentar. 33 00:01:56,067 --> 00:02:00,589 Toda URL que esse endereço de acesso às páginas web 34 00:02:00,589 --> 00:02:04,108 será composta por protocolo, 35 00:02:04,108 --> 00:02:07,787 no caso HTTP ou HTTPS, 36 00:02:07,787 --> 00:02:10,568 o DNS que estamos acessando, 37 00:02:10,568 --> 00:02:15,593 que é o nome do domínio da página ou da aplicação que quero acessar, 38 00:02:15,593 --> 00:02:19,985 e uma porta, que é um número que vai lá no final. 39 00:02:19,985 --> 00:02:22,968 E se você nunca viu esse número antes, 40 00:02:22,968 --> 00:02:26,130 é porque ele é subentendido em alguns casos. 41 00:02:26,130 --> 00:02:30,124 Por exemplo, o HTTP utiliza a porta 80, 42 00:02:30,124 --> 00:02:34,364 o HTTPS utiliza a porta 443. 43 00:02:34,364 --> 00:02:36,184 Mas caso desenvolva, por exemplo, 44 00:02:36,184 --> 00:02:39,202 um front-end ou um dashboard de API, 45 00:02:39,202 --> 00:02:42,567 é normal o colocarmos lá na porta 5000, 46 00:02:42,567 --> 00:02:45,071 e aí eu preciso especificar esse endereço. 47 00:02:45,071 --> 00:02:48,440 Se nós acessarmos, por exemplo, o site do Google, 48 00:02:48,440 --> 00:02:51,143 já podemos ver como é que ele vai funcionar. 49 00:02:51,143 --> 00:02:56,426 Notem que já temos aqui o nosso protocolo HTTPS, 50 00:02:56,426 --> 00:02:59,821 indicando que é só uma conexão segura. 51 00:02:59,821 --> 00:03:02,722 Mas veja, não é porque eu tenho um HTTPS aqui 52 00:03:02,722 --> 00:03:05,138 que eu estou 100% seguro. 53 00:03:05,138 --> 00:03:10,813 Na realidade, isso só diz que eu tenho um certificado em uso, 54 00:03:10,813 --> 00:03:14,518 não necessariamente que esse é o certificado do Google, 55 00:03:14,518 --> 00:03:17,123 já já nós vamos ver como é que validamos isso. 56 00:03:17,123 --> 00:03:22,090 Na sequência, nós temos o endereço DNS do Google 57 00:03:22,090 --> 00:03:27,188 e aqui está subtendido a porta 443. 58 00:03:27,188 --> 00:03:30,751 "Professor, como é que conseguimos ver todos esses detalhes?" 59 00:03:30,751 --> 00:03:33,524 Se clicarmos aqui em cima do ícone do Google 60 00:03:33,524 --> 00:03:36,854 ou clicar em cima do cadeado que aparece 61 00:03:36,854 --> 00:03:39,731 quando temos aqui o HTTPS, 62 00:03:39,731 --> 00:03:44,143 nós conseguimos ver as informações desse site. 63 00:03:44,143 --> 00:03:47,605 Por exemplo, ele está indicando que essa conexão é segura, 64 00:03:47,605 --> 00:03:50,192 se eu clico para pedir mais informações, 65 00:03:50,192 --> 00:03:54,582 ele me traz um briefing e me traz um acesso ao certificado. 66 00:03:54,582 --> 00:03:57,244 Onde eu consigo checar, por exemplo, 67 00:03:57,244 --> 00:04:00,373 quem foi que emitiu esse certificado. 68 00:04:00,373 --> 00:04:02,731 No caso, esse certificado foi emitido para o Google 69 00:04:02,731 --> 00:04:06,756 por uma companhia chamada "GTS CA 1C3", 70 00:04:06,756 --> 00:04:10,609 que, no caso, é o próprio serviço de segurança da Google. 71 00:04:10,609 --> 00:04:14,057 Também conseguimos ver a data de emissão 72 00:04:14,057 --> 00:04:16,995 e os hashs de uso desse certificado, 73 00:04:16,995 --> 00:04:19,741 como, por exemplo, a chave pública. 74 00:04:19,741 --> 00:04:22,859 Isso porque toda comunicação HTTPS 75 00:04:22,859 --> 00:04:26,566 funciona baseada em chave pública e privada. 76 00:04:26,566 --> 00:04:29,475 A chave pública nós vamos utilizar 77 00:04:29,475 --> 00:04:31,375 para assinar qualquer dado 78 00:04:31,375 --> 00:04:33,740 que eu queira mandar para o servidor, 79 00:04:33,740 --> 00:04:37,800 afinal, só a chave privada vai abrir esse dado. 80 00:04:37,800 --> 00:04:40,491 Já quando eu assino com a chave privada, 81 00:04:40,491 --> 00:04:42,344 a pública consegue abrir, 82 00:04:42,344 --> 00:04:46,852 e isso não é tão interessante quando eu quero garantir segurança. 83 00:04:46,852 --> 00:04:48,992 "Professor, e aí, como é que eu faço?" 84 00:04:48,992 --> 00:04:51,666 Normalmente, quando eu chamo esse site, 85 00:04:51,666 --> 00:04:55,749 nós já negociamos ali, utilizando as chaves públicas, 86 00:04:55,749 --> 00:04:59,024 um acordo de senha para usarmos 87 00:04:59,024 --> 00:05:02,266 ou um outro certificado privado para nós usarmos. 88 00:05:02,266 --> 00:05:05,040 E dessa forma nós escapamos desse problema 89 00:05:05,040 --> 00:05:09,354 de assinar com a chave privada e ler com a chave pública. 90 00:05:09,354 --> 00:05:13,589 Outro detalhe importante é que temos mais algumas informações 91 00:05:13,589 --> 00:05:16,965 e detalhes sobre esse certificado. 92 00:05:16,965 --> 00:05:19,216 Mas voltando aqui no cadeado, 93 00:05:19,216 --> 00:05:21,587 vejam que também terá algumas opções, 94 00:05:21,587 --> 00:05:24,350 como os cookies que estão em uso 95 00:05:24,350 --> 00:05:28,870 ou mesmo, as informações sobre os trackings, 96 00:05:28,870 --> 00:05:32,371 que são os acessos que estamos pedindo. 97 00:05:32,371 --> 00:05:34,111 Os trackings vão ser referentes 98 00:05:34,111 --> 00:05:36,542 a basicamente qualquer coisa que queiramos acessar, 99 00:05:36,542 --> 00:05:38,672 desde a localização 100 00:05:38,672 --> 00:05:42,958 ou até a possibilidade de armazenar algum dado no computador. 101 00:05:42,958 --> 00:05:47,272 Só que o cookie é um pouquinho mais delicado. 102 00:05:47,272 --> 00:05:49,009 O cookie teoricamente são dados 103 00:05:49,009 --> 00:05:52,239 que nós estamos salvando nessa máquina 104 00:05:52,239 --> 00:05:54,248 para acelerar a nossa página. 105 00:05:54,248 --> 00:05:56,786 Ele é uma espécie de client-side 106 00:05:56,786 --> 00:05:59,416 ou processamento do lado cliente. 107 00:05:59,416 --> 00:06:03,557 Onde conseguimos aliviar o tráfego do servidor, 108 00:06:03,557 --> 00:06:05,914 só que expondo ao risco 109 00:06:05,914 --> 00:06:08,021 de ter parte do meu código 110 00:06:08,021 --> 00:06:10,008 disponível na máquina do usuário. 111 00:06:10,008 --> 00:06:12,169 Além disso, o cookie também salva 112 00:06:12,169 --> 00:06:14,668 vários outros componentes da página, 113 00:06:14,668 --> 00:06:18,577 como fotos muito acessadas, logomarcas e coisas do gênero. 114 00:06:18,577 --> 00:06:21,212 Então, ele termina sendo usado, 115 00:06:21,212 --> 00:06:24,441 o problema é qual dado eu estou passando para ele. 116 00:06:24,441 --> 00:06:27,675 Já quando falamos do server-side, 117 00:06:27,675 --> 00:06:32,537 ele vai compor todos os dados que nós temos do lado do servidor 118 00:06:32,537 --> 00:06:35,380 e aí nós terminamos tendo um pouco mais de segurança. 119 00:06:35,380 --> 00:06:37,611 Eu vou me preocupar muito com o ataque 120 00:06:37,611 --> 00:06:39,128 que vai tentar explorar, 121 00:06:39,128 --> 00:06:41,941 mas isso tudo vai vir via rede 122 00:06:41,941 --> 00:06:47,344 e não simplesmente eu disponibilizar esse código aberto para todo mundo. 123 00:06:47,344 --> 00:06:52,568 Além disso, essa nossa interação nem sempre é bem sucedida 124 00:06:52,568 --> 00:06:56,115 e justamente por isso o HTTP tem códigos. 125 00:06:56,115 --> 00:06:59,290 Toda vez que você recebe um código 200, por exemplo, 126 00:06:59,290 --> 00:07:02,624 é porque a sua solicitação deu certo, 127 00:07:02,624 --> 00:07:06,503 toda a família 200 quer dizer solicitação bem sucedida. 128 00:07:06,503 --> 00:07:09,444 Já quando nós falamos da família 500, 129 00:07:09,444 --> 00:07:11,823 nós estamos falando da família dos erros. 130 00:07:11,823 --> 00:07:15,613 O famoso erro 404 já está em outra família 131 00:07:15,613 --> 00:07:17,959 para indicar falha no server-side, 132 00:07:17,959 --> 00:07:20,660 onde eu não consegui achar o endereço. 133 00:07:20,660 --> 00:07:25,475 Então, cada código vai ter ali a sua família 134 00:07:25,475 --> 00:07:30,350 e, dentro dessas famílias, os erros que ele está justificando. 135 00:07:30,350 --> 00:07:33,506 Veja que só para manter uma aplicação web no ar 136 00:07:33,506 --> 00:07:35,817 já temos que ter uma série de cuidados 137 00:07:35,817 --> 00:07:38,811 e trabalhar minunciosamente vários pontos. 138 00:07:38,811 --> 00:07:41,354 Mas são justamente esses pequenos pontos 139 00:07:41,354 --> 00:07:44,693 que me permitem arquitetar uma solução web 140 00:07:44,693 --> 00:07:48,347 que vai ser ao mesmo tempo útil e segura.