WEBVTT 00:00:07.857 --> 00:00:10.402 No desenvolvimento de uma aplicação web, 00:00:10.402 --> 00:00:14.900 uma das principais coisas que vamos ter é o http, 00:00:14.900 --> 00:00:19.137 ele é basicamente a base de tudo o que nós fazemos. 00:00:19.137 --> 00:00:23.648 E veja, não estamos falando aqui só de aplicação para o navegador, 00:00:23.648 --> 00:00:27.574 o HTTP também está embarcado em aplicações mobile 00:00:27.574 --> 00:00:32.564 e mesmo alguns sistemas que nós pensamos que foram desenvolvidos 00:00:32.564 --> 00:00:34.486 com a estrutura compilada. 00:00:34.486 --> 00:00:36.976 Isso porque ele trabalha muito bem 00:00:36.976 --> 00:00:40.845 com essa ideia de interação cliente servidor. 00:00:40.845 --> 00:00:44.002 Muito disso se deve aos seus métodos. 00:00:44.002 --> 00:00:46.123 E aí podemos destacar os principais, 00:00:46.123 --> 00:00:50.071 que são: o GET que eu obtenho informação, 00:00:50.071 --> 00:00:54.219 o POST que eu publico uma informação, 00:00:54.219 --> 00:00:59.781 PUT, eu adiciono uma informação para alguém que já existe. 00:00:59.781 --> 00:01:04.281 No caso, por exemplo, um usuário ou um campo que já está determinado 00:01:04.281 --> 00:01:07.288 e DELETE onde eu mando remover alguém. 00:01:07.288 --> 00:01:09.474 Foi justamente essa estrutura 00:01:09.474 --> 00:01:13.058 que moldou todo o mercado de TI que conhecemos hoje em dia, 00:01:13.058 --> 00:01:15.679 principalmente nas aplicações web. 00:01:15.679 --> 00:01:17.452 É através deles que conseguimos 00:01:17.452 --> 00:01:20.393 enviar, receber ou alterar algum dado 00:01:20.393 --> 00:01:22.985 nos sistemas que usamos no dia a dia. 00:01:22.985 --> 00:01:25.645 Mas esses caras não estão sozinhos, 00:01:25.645 --> 00:01:27.840 em especial porque o HTTP 00:01:27.840 --> 00:01:30.344 normalmente tem um problema de segurança. 00:01:30.344 --> 00:01:33.428 Esses dados estão expostos na rede 00:01:33.428 --> 00:01:36.979 disponível para qualquer hacker poder acessar. 00:01:36.979 --> 00:01:40.665 Justamente por isso que veio o https, 00:01:40.665 --> 00:01:44.611 onde temos a parte de segurança sendo implementada. 00:01:44.611 --> 00:01:46.002 E é nele, por exemplo, 00:01:46.002 --> 00:01:48.322 que ganhamos a criptografia 00:01:48.322 --> 00:01:50.865 dos dados que estamos operando. 00:01:50.865 --> 00:01:56.067 E aqui também vamos ter que ter alguns detalhes a se atentar 00:01:56.067 --> 00:02:00.589 toda URL que esse endereço de acesso às páginas web 00:02:00.589 --> 00:02:04.108 será composta por protocolo 00:02:04.108 --> 00:02:07.787 no caso HTTP, o HTTPS, 00:02:07.787 --> 00:02:10.568 o DNS que estamos acessando, 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, 00:02:15.593 --> 00:02:19.985 e uma porta, que é um número que vai lá no final. 00:02:19.985 --> 00:02:22.968 E se você nunca viu esse número antes, 00:02:22.968 --> 00:02:26.130 é porque ele é subentendido em alguns casos. 00:02:26.130 --> 00:02:30.004 Por exemplo, o HTTP utiliza a porta 80, 00:02:30.004 --> 00:02:34.364 o HTTPS utiliza a porta 443. 00:02:34.364 --> 00:02:36.184 Mas caso desenvolva, por exemplo, 00:02:36.184 --> 00:02:39.202 um front end ou um dashboard de API, 00:02:39.202 --> 00:02:42.567 é normal colocarmos esse cara lá na porta 5000, 00:02:42.567 --> 00:02:45.071 e aí eu preciso especificar esse endereço. 00:02:45.071 --> 00:02:48.440 Se nós acessamos, por exemplo, o site do Google, 00:02:48.440 --> 00:02:51.143 já podemos ver como é que esse cara vai funcionar. 00:02:51.143 --> 00:02:56.426 Notem que já temos aqui o nosso protocolo HTTPS, 00:02:56.426 --> 00:02:59.821 indicando que é só uma conexão segura. 00:02:59.821 --> 00:03:02.722 Mas veja, não é porque eu tenho um https aqui 00:03:02.722 --> 00:03:05.138 que eu estou 100% seguro. 00:03:05.138 --> 00:03:10.813 Na realidade isso só diz que eu tenho um certificado em uso, 00:03:10.813 --> 00:03:14.518 não necessariamente que esse é o certificado do Google, 00:03:14.518 --> 00:03:17.155 já já nós vamos ver como é que validamos isso. 00:03:17.155 --> 00:03:22.090 Na sequência nós temos o endereço DNS do Google 00:03:22.090 --> 00:03:27.188 e aqui está subtendido a porta 443. 00:03:27.188 --> 00:03:30.751 "Professor, como é que conseguimos vertodos esses detalhes?" 00:03:30.751 --> 00:03:33.524 se clicarmos aqui em cima do ícone do Google 00:03:33.524 --> 00:03:36.854 ou clicar em cima do cadeado que aparece 00:03:36.854 --> 00:03:39.731 quando temos aqui o HTTPS, 00:03:39.731 --> 00:03:44.143 nós conseguimos ver as informações desse site. 00:03:44.143 --> 00:03:47.605 Por exemplo, ele está indicando que essa conexão a segura, 00:03:47.605 --> 00:03:50.192 se eu clico para pedir mais informações, 00:03:50.192 --> 00:03:54.582 ele me traz um briefing e me traz um acesso ao certificado. 00:03:54.582 --> 00:03:57.244 Onde eu consigo checar, por exemplo, 00:03:57.244 --> 00:04:00.373 quem foi que emitiu esse certificado. 00:04:00.373 --> 00:04:02.731 No caso, esse certificado foi emitido para o Google 00:04:02.731 --> 00:04:06.581 por uma companhia chamada "GTS CA 1C3" 00:04:06.581 --> 00:04:10.609 que no caso é o próprio serviço de segurança da Google. 00:04:10.609 --> 00:04:14.057 Também conseguimos ver a data de emissão 00:04:14.057 --> 00:04:16.995 e os hashs de uso desse certificado, 00:04:16.995 --> 00:04:19.741 como por exemplo a chave pública. 00:04:19.741 --> 00:04:22.859 Isso porque toda comunicação https 00:04:22.859 --> 00:04:26.566 funciona baseada em chave pública e privada. 00:04:26.566 --> 00:04:29.475 A chave pública nós vamos utilizar 00:04:29.475 --> 00:04:31.375 para assinar qualquer dado 00:04:31.375 --> 00:04:33.740 que eu queira mandar para o servidor, 00:04:33.740 --> 00:04:37.800 afinal, só a chave privada vai abrir esse dado. 00:04:37.800 --> 00:04:40.491 Já quando eu assino com a chave privada, 00:04:40.491 --> 00:04:42.344 a pública consegue abrir, 00:04:42.344 --> 00:04:46.852 e isso não é tão interessante quando eu quero garantir segurança. 00:04:46.852 --> 00:04:48.992 "Professor, e aí, como é que eu faço?", 00:04:48.992 --> 00:04:51.666 normalmente, quando eu chamo esse site, 00:04:51.666 --> 00:04:55.749 nós já negociamos ali, utilizando as chaves públicas, 00:04:55.749 --> 00:04:58.464 um acordo de senha para usarmos 00:04:58.464 --> 00:05:02.266 ou um outro certificado privado para nós usarmos. 00:05:02.266 --> 00:05:05.040 E dessa forma nós escapamos desse problema 00:05:05.040 --> 00:05:09.354 do assinar com a chave privada e ler com a chave pública. 00:05:09.354 --> 00:05:13.432 Outro detalhe importante é que nós temos mais algumas informações 00:05:13.432 --> 00:05:16.965 e detalhes sobre esse certificado. 00:05:16.965 --> 00:05:19.216 Mas voltando aqui no cadeado, 00:05:19.216 --> 00:05:21.587 vejam que também terá algumas opções, 00:05:21.587 --> 00:05:24.350 como os cookies que estão em uso 00:05:24.350 --> 00:05:28.870 ou mesmo, as informações sobre os trekkings, 00:05:28.870 --> 00:05:32.371 que são os acessos que estamos pedindo. 00:05:32.371 --> 00:05:33.978 Os trekkings vão ser referentes 00:05:33.978 --> 00:05:36.542 a basicamente qualquer coisa que queiramos acessar, 00:05:36.542 --> 00:05:38.672 desde a localização 00:05:38.672 --> 00:05:42.958 ou até a possibilidade de armazenar algum dado no computador. 00:05:42.958 --> 00:05:47.272 Só que o Cookie, é um pouquinho mais delicado, 00:05:47.272 --> 00:05:49.009 o cookie teoricamente são dados 00:05:49.009 --> 00:05:52.239 que nós estamos salvando nessa máquina 00:05:52.239 --> 00:05:54.248 para acelerar a nossa página. 00:05:54.248 --> 00:05:56.786 Ela é uma espécie de client side 00:05:56.786 --> 00:05:59.416 ou processamento do lado cliente. 00:05:59.416 --> 00:06:03.557 Onde conseguimos aliviar o tráfego do servidor, 00:06:03.557 --> 00:06:05.914 só que expondo ao risco 00:06:05.914 --> 00:06:08.021 de ter parte do meu código NOTE Paragraph 00:06:08.021 --> 00:06:10.008 disponível na máquina do usuário. 00:06:10.008 --> 00:06:12.169 Além disso, o cookie também salva 00:06:12.169 --> 00:06:14.668 vários outros componentes da página, 00:06:14.668 --> 00:06:18.577 como fotos muito acessadas, logomarcas e coisas do gênero. 00:06:18.577 --> 00:06:21.212 Então, ele termina sendo usado, 00:06:21.212 --> 00:06:24.441 o problema é qual dado eu to passando para ele 00:06:24.441 --> 00:06:27.675 Já quando falamos do server side, 00:06:27.675 --> 00:06:32.537 ele vai compor todos os dados que nós temos do lado do servidor 00:06:32.537 --> 00:06:35.380 e aí nós terminamos tendo um pouco mais de segurança. 00:06:35.380 --> 00:06:37.551 Eu vou me preocupar muito com o ataque 00:06:37.551 --> 00:06:39.128 que vai tentar explorar, 00:06:39.128 --> 00:06:41.941 mas isso tudo vai vir via rede 00:06:41.941 --> 00:06:47.344 e não simplesmente disponibilizei esse código aberto para todo mundo. 00:06:47.344 --> 00:06:52.568 Além disso, essa nossa interação nem sempre é bem sucedida 00:06:52.568 --> 00:06:56.115 e justamente por isso o HTTP tem códigos. 00:06:56.115 --> 00:06:59.290 Toda vez que você recebe um código 200, por exemplo, 00:06:59.290 --> 00:07:02.624 é porque a sua solicitação deu certo, 00:07:02.624 --> 00:07:06.503 toda a família 200 quer dizer solicitação bem sucedida. 00:07:06.503 --> 00:07:09.444 Já quando nós falamos da família 500, 00:07:09.444 --> 00:07:11.823 nós estamos falando da família, dos erros. 00:07:11.823 --> 00:07:15.613 O famoso erro 404 já está em outra família 00:07:15.613 --> 00:07:17.959 para indicar falha no server side, 00:07:17.959 --> 00:07:20.660 onde eu não consegui achar o endereço. 00:07:20.660 --> 00:07:25.475 Então, cada código vai ter ali a sua família 00:07:25.475 --> 00:07:30.350 e dentro dessas famílias os erros que ele está justificando. 00:07:30.350 --> 00:07:33.506 Veja que só para manter uma aplicação web no ar 00:07:33.506 --> 00:07:35.817 já temos que ter uma série de cuidados 00:07:35.817 --> 00:07:38.811 e trabalhar minunciosamente vários pontos. 00:07:38.811 --> 00:07:41.354 Mas são justamente esses pequenos pontos 00:07:41.354 --> 00:07:44.693 que me permitem arquitetar uma solução web 00:07:44.693 --> 00:07:48.348 que vai ser ao mesmo tempo útil e segura.