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