0:00:07.857,0:00:10.402 No desenvolvimento [br]de uma aplicação web, 0:00:10.402,0:00:14.900 uma das principais coisas[br]que vamos ter é o http, 0:00:14.900,0:00:19.137 ele é basicamente a base de tudo[br]o que nós fazemos. 0:00:19.137,0:00:23.648 E veja, não estamos falando aqui[br]só de aplicação para o navegador, 0:00:23.648,0:00:27.574 o HTTP também está embarcado[br]em aplicações mobile 0:00:27.574,0:00:32.564 e mesmo alguns sistemas que nós [br]pensamos que foram desenvolvidos 0:00:32.564,0:00:34.486 com a estrutura compilada. 0:00:34.486,0:00:36.976 Isso porque ele trabalha [br]muito bem 0:00:36.976,0:00:40.845 com essa ideia de interação [br]cliente servidor. 0:00:40.845,0:00:44.002 Muito disso se deve [br]aos seus métodos. 0:00:44.002,0:00:46.123 E aí podemos destacar os principais, 0:00:46.123,0:00:50.071 que são: o GET[br]que eu obtenho informação, 0:00:50.071,0:00:54.219 o POST que eu publico [br]uma informação, 0:00:54.219,0:00:59.781 PUT, eu adiciono uma informação [br]para alguém que já existe. 0:00:59.781,0:01:04.281 No caso, por exemplo, um usuário[br]ou um campo que já está determinado 0:01:04.281,0:01:07.288 e DELETE onde eu mando [br]remover alguém. 0:01:07.288,0:01:09.474 Foi justamente essa estrutura 0:01:09.474,0:01:13.058 que moldou todo o mercado de TI[br]que conhecemos hoje em dia, 0:01:13.058,0:01:15.679 principalmente [br]nas aplicações web. 0:01:15.679,0:01:17.452 É através deles que conseguimos 0:01:17.452,0:01:20.393 enviar, receber ou alterar [br]algum dado 0:01:20.393,0:01:22.985 nos sistemas que usamos [br]no dia a dia. 0:01:22.985,0:01:25.645 Mas esses caras [br]não estão sozinhos, 0:01:25.645,0:01:27.840 em especial porque o HTTP 0:01:27.840,0:01:30.344 normalmente tem um problema [br]de segurança. 0:01:30.344,0:01:33.428 Esses dados estão expostos [br]na rede 0:01:33.428,0:01:36.979 disponível para qualquer hacker [br]poder acessar. 0:01:36.979,0:01:40.665 Justamente por isso [br]que veio o https, 0:01:40.665,0:01:44.611 onde temos a parte de segurança[br]sendo implementada. 0:01:44.611,0:01:46.002 E é nele, por exemplo, 0:01:46.002,0:01:48.322 que ganhamos a criptografia 0:01:48.322,0:01:50.865 dos dados [br]que estamos operando. 0:01:50.865,0:01:56.067 E aqui também vamos ter que ter[br]alguns detalhes a se atentar 0:01:56.067,0:02:00.589 toda URL que esse endereço [br]de acesso às páginas web 0:02:00.589,0:02:04.108 será composta [br]por protocolo 0:02:04.108,0:02:07.787 no caso HTTP, [br]o HTTPS, 0:02:07.787,0:02:10.568 o DNS que [br]estamos acessando, 0:02:10.568,0:02:15.593 que é o nome do domínio da página[br]ou da aplicação que eu quero acessar, 0:02:15.593,0:02:19.985 e uma porta, que é um número [br]que vai lá no final. 0:02:19.985,0:02:22.968 E se você nunca viu [br]esse número antes, 0:02:22.968,0:02:26.130 é porque ele é subentendido [br]em alguns casos. 0:02:26.130,0:02:30.004 Por exemplo, [br]o HTTP utiliza a porta 80, 0:02:30.004,0:02:34.364 o HTTPS utiliza[br]a porta 443. 0:02:34.364,0:02:36.184 Mas caso desenvolva, [br]por exemplo, 0:02:36.184,0:02:39.202 um front end ou um[br]dashboard de API, 0:02:39.202,0:02:42.567 é normal colocarmos esse cara[br]lá na porta 5000, 0:02:42.567,0:02:45.071 e aí eu preciso especificar [br]esse endereço. 0:02:45.071,0:02:48.440 Se nós acessamos, por exemplo,[br]o site do Google, 0:02:48.440,0:02:51.143 já podemos ver[br]como é que esse cara vai funcionar. 0:02:51.143,0:02:56.426 Notem que já temos aqui[br]o nosso protocolo HTTPS, 0:02:56.426,0:02:59.821 indicando que é só [br]uma conexão segura. 0:02:59.821,0:03:02.722 Mas veja, não é porque [br]eu tenho um https aqui 0:03:02.722,0:03:05.138 que eu estou 100% seguro. 0:03:05.138,0:03:10.813 Na realidade isso só diz[br]que eu tenho um certificado em uso, 0:03:10.813,0:03:14.518 não necessariamente[br]que esse é o certificado do Google, 0:03:14.518,0:03:17.155 já já nós vamos ver como [br]é que validamos isso. 0:03:17.155,0:03:22.090 Na sequência[br]nós temos o endereço DNS do Google 0:03:22.090,0:03:27.188 e aqui está subtendido[br]a porta 443. 0:03:27.188,0:03:30.751 "Professor, como é que conseguimos[br]vertodos esses detalhes?" 0:03:30.751,0:03:33.524 se clicarmos aqui[br]em cima do ícone do Google 0:03:33.524,0:03:36.854 ou clicar em cima [br]do cadeado que aparece 0:03:36.854,0:03:39.731 quando temos [br]aqui o HTTPS, 0:03:39.731,0:03:44.143 nós conseguimos ver [br]as informações desse site. 0:03:44.143,0:03:47.605 Por exemplo, ele está indicando[br]que essa conexão a segura, 0:03:47.605,0:03:50.192 se eu clico para pedir [br]mais informações, 0:03:50.192,0:03:54.582 ele me traz um briefing[br]e me traz um acesso ao certificado. 0:03:54.582,0:03:57.244 Onde eu consigo checar, [br]por exemplo, 0:03:57.244,0:04:00.373 quem foi que emitiu [br]esse certificado. 0:04:00.373,0:04:02.731 No caso, esse certificado[br]foi emitido para o Google 0:04:02.731,0:04:06.581 por uma companhia [br]chamada "GTS CA 1C3" 0:04:06.581,0:04:10.609 que no caso é o próprio[br]serviço de segurança da Google. 0:04:10.609,0:04:14.120 Também conseguimos ver[br]a data de emissão 0:04:14.186,0:04:17.089 e os efeitos de uso [br]desse certificado, 0:04:17.089,0:04:19.925 como por exemplo [br]a chave pública. 0:04:19.925,0:04:23.329 Isso porque toda comunicação https 0:04:23.329,0:04:26.565 funciona baseada [br]em chave pública e privada. 0:04:26.632,0:04:29.635 A chave pública [br]nós vamos utilizar 0:04:29.635,0:04:33.839 para assinar qualquer dado [br]e mandar para o servidor, 0:04:33.939,0:04:34.573 afinal, só a chave privada [br]vai abrir esse dado. 0:04:37.877,0:04:42.314 Já quando eu assino com a chave privada,[br]a pública consegue abrir, 0:04:42.381,0:04:47.119 e isso não é tão interessante[br]quando eu quero garantir segurança. 0:04:47.219,0:04:49.121 E aí, como é que eu faço? 0:04:49.121,0:04:53.359 Normalmente, quando eu chamo esse site,[br]a gente já negocia ali, 0:04:53.359,0:04:58.464 utilizando as chaves públicas,[br]um acordo de senha para a gente 0:04:58.464,0:05:02.268 usar um outro certificado privado[br]para a gente usar. 0:05:02.334,0:05:05.104 E dessa forma a gente escapa[br]desse problema 0:05:05.104,0:05:09.642 do assinar com a chave privada[br]e ler com a chave pública. 0:05:09.708,0:05:13.512 Outro detalhe importante[br]é que a gente tem mais algumas informações 0:05:13.512,0:05:16.949 e detalhes sobre esse certificado. 0:05:17.049,0:05:20.352 Mas voltando aqui no quadradinho,[br]vejam que a gente também 0:05:20.352,0:05:26.659 vai ter algumas opções,[br]como os cookies que estão em uso ou mesmo 0:05:26.759,0:05:28.093 as informações sobre os 0:05:28.093,0:05:32.231 trekkings, que são os acessos[br]que a gente está pedindo. 0:05:32.297,0:05:34.900 Os trekkings vão ser referentes[br]a basicamente 0:05:34.900,0:05:38.737 qualquer coisa que a gente queira acessar,[br]desde a localização 0:05:38.804,0:05:43.342 ou até a possibilidade de armazenar[br]algum dado no computador. 0:05:43.442,0:05:47.679 Só que o CUC ele[br]é um pouquinho mais delicado, o cookie. 0:05:47.679,0:05:50.949 Teoricamente[br]são dados que nós estamos salvando 0:05:50.949,0:05:54.253 nessa máquina[br]para acelerar a nossa página. 0:05:54.319,0:05:56.855 Ela é uma espécie de client side 0:05:56.855,0:05:59.591 ou processamento do lado cliente, 0:05:59.591,0:06:03.529 aonde a gente[br]consegue aliviar o tráfego do servidor, 0:06:03.629,0:06:06.965 só que expondo ao risco de ter parte 0:06:06.965,0:06:10.302 do meu código disponível[br]na máquina do usuário. 0:06:10.369,0:06:14.640 Além disso, Cookie também salva[br]vários outros componentes da página, 0:06:14.740,0:06:18.677 como fotos muito acessadas,[br]logomarcas e coisas do gênero. 0:06:18.744,0:06:21.380 Então ele está em Minas sendo usado. 0:06:21.380,0:06:24.917 O problema é qual dado eu to passando[br]pra ele já. 0:06:24.917,0:06:28.887 Quando a gente fala do server side,[br]ele vai compor 0:06:28.987,0:06:32.524 todos os dados[br]que a gente tem do lado do servidor 0:06:32.591,0:06:35.527 e aí a gente termina[br]tendo um pouco mais de segurança. 0:06:35.527,0:06:38.997 Eu vou me preocupar muito com o ataque[br]que vou tentar explorar, 0:06:39.097,0:06:42.067 mas isso tudo vai vir via rede 0:06:42.100,0:06:47.639 e não simplesmente disponibilizei esse[br]código aberto para todo mundo. 0:06:47.739,0:06:48.740 Além disso, 0:06:48.740,0:06:52.578 essa nossa[br]interação nem sempre é bem sucedida 0:06:52.644,0:06:56.181 e justamente por isso o HTTP tem códigos. 0:06:56.281,0:06:59.284 Toda vez que você recebe um código[br]200, por exemplo, 0:06:59.351,0:07:02.554 é porque a sua solicitação deu certo. 0:07:02.621,0:07:06.692 Toda a família 200[br]quer dizer, solicitação bem sucedida. 0:07:06.758,0:07:10.062 Já quando a gente fala da família 500,[br]a gente está falando 0:07:10.062,0:07:12.030 da família, dos erros. 0:07:12.030,0:07:15.667 O famoso erro 404 já está noutra família 0:07:15.667,0:07:20.639 para indicar falha no server side,[br]aonde eu não consegui achar o endereço. 0:07:20.739,0:07:25.477 Então cada código[br]vai ter ali a sua família 0:07:25.544,0:07:30.482 e dentro dessas famílias[br]os erros que ele está justificando. 0:07:30.549,0:07:33.552 Veja que só para manter uma aplicação[br]web no ar 0:07:33.585,0:07:34.386 a gente já tem que ter 0:07:34.386,0:07:38.724 uma série de cuidados[br]e trabalhar minunciosamente vários pontos. 0:07:38.824,0:07:41.460 Mas são justamente esses pequenos pontos 0:07:41.460,0:07:44.763 que me permitem arquitetar uma solução web 0:07:44.830,0:07:48.567 que vai ser ao[br]mesmo tempo útil e segura. E.