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.057 Também conseguimos ver[br]a data de emissão 0:04:14.057,0:04:16.995 e os hashs de uso [br]desse certificado, 0:04:16.995,0:04:19.741 como por exemplo [br]a chave pública. 0:04:19.741,0:04:22.859 Isso porque toda [br]comunicação https 0:04:22.859,0:04:26.566 funciona baseada [br]em chave pública e privada. 0:04:26.566,0:04:29.475 A chave pública [br]nós vamos utilizar 0:04:29.475,0:04:31.375 para assinar qualquer dado 0:04:31.375,0:04:33.740 que eu queira mandar [br]para o servidor, 0:04:33.740,0:04:37.800 afinal, só a chave privada [br]vai abrir esse dado. 0:04:37.800,0:04:40.491 Já quando eu assino [br]com a chave privada, 0:04:40.491,0:04:42.344 a pública consegue abrir, 0:04:42.344,0:04:46.852 e isso não é tão interessante[br]quando eu quero garantir segurança. 0:04:46.852,0:04:48.992 "Professor, e aí, [br]como é que eu faço?", 0:04:48.992,0:04:51.666 normalmente, quando [br]eu chamo esse site, 0:04:51.666,0:04:55.749 nós já negociamos ali,[br]utilizando as chaves públicas, 0:04:55.749,0:04:58.464 um acordo de senha [br]para usarmos 0:04:58.464,0:05:02.266 ou um outro certificado privado[br]para nós usarmos. 0:05:02.266,0:05:05.040 E dessa forma nós escapamos[br]desse problema 0:05:05.040,0:05:09.354 do assinar com a chave privada[br]e ler com a chave pública. 0:05:09.354,0:05:13.432 Outro detalhe importante é que nós [br]temos mais algumas informações 0:05:13.432,0:05:16.965 e detalhes sobre [br]esse certificado. 0:05:16.965,0:05:19.216 Mas voltando aqui [br]no cadeado, 0:05:19.216,0:05:21.587 vejam que também [br]terá algumas opções, 0:05:21.587,0:05:24.350 como os cookies [br]que estão em uso 0:05:24.350,0:05:28.870 ou mesmo, as informações [br]sobre os trekkings, 0:05:28.870,0:05:32.371 que são os acessos[br]que estamos pedindo. 0:05:32.371,0:05:33.978 Os trekkings vão ser referentes 0:05:33.978,0:05:36.542 a basicamente qualquer coisa [br]que queiramos acessar, 0:05:36.542,0:05:38.672 desde a localização 0:05:38.672,0:05:42.958 ou até a possibilidade de armazenar[br]algum dado no computador. 0:05:42.958,0:05:47.272 Só que o Cookie, é um pouquinho [br]mais delicado, 0:05:47.272,0:05:49.009 o cookie teoricamente [br]são dados 0:05:49.009,0:05:52.239 que nós estamos salvando [br]nessa máquina 0:05:52.239,0:05:54.248 para acelerar [br]a nossa página. 0:05:54.248,0:05:56.786 Ela é uma espécie [br]de client side 0:05:56.786,0:05:59.416 ou processamento [br]do lado cliente. 0:05:59.416,0:06:03.557 Onde conseguimos aliviar [br]o tráfego do servidor, 0:06:03.557,0:06:05.914 só que expondo [br]ao risco 0:06:05.914,0:06:08.021 de ter parte do meu [br]código 0:06:08.021,0:06:10.008 disponível na máquina [br]do usuário. 0:06:10.008,0:06:12.169 Além disso, o cookie [br]também salva 0:06:12.169,0:06:14.668 vários outros [br]componentes da página, 0:06:14.668,0:06:18.577 como fotos muito acessadas,[br]logomarcas e coisas do gênero. 0:06:18.577,0:06:21.212 Então, ele termina sendo usado, 0:06:21.212,0:06:24.441 o problema é qual dado [br]eu to passando para ele 0:06:24.441,0:06:27.675 Já quando falamos [br]do server side, 0:06:27.675,0:06:32.537 ele vai compor todos os dados[br]que nós temos do lado do servidor 0:06:32.537,0:06:35.380 e aí nós terminamos tendo [br]um pouco mais de segurança. 0:06:35.380,0:06:37.551 Eu vou me preocupar [br]muito com o ataque 0:06:37.551,0:06:39.128 que vai tentar explorar, 0:06:39.128,0:06:41.941 mas isso tudo [br]vai vir via rede 0:06:41.941,0:06:47.344 e não simplesmente disponibilizei [br]esse código aberto para todo mundo. 0:06:47.344,0:06:52.568 Além disso, essa nossa interação [br]nem sempre é bem sucedida 0:06:52.568,0:06:56.115 e justamente por isso [br]o HTTP tem códigos. 0:06:56.115,0:06:59.290 Toda vez que você recebe um código[br]200, por exemplo, 0:06:59.290,0:07:02.624 é porque a sua [br]solicitação deu certo, 0:07:02.624,0:07:06.503 toda a família 200 quer dizer[br]solicitação bem sucedida. 0:07:06.503,0:07:09.444 Já quando nós falamos [br]da família 500, 0:07:09.444,0:07:11.823 nós estamos falando [br]da família, dos erros. 0:07:11.823,0:07:15.613 O famoso erro 404 [br]já está em outra família 0:07:15.613,0:07:17.959 para indicar falha [br]no server side, 0:07:17.959,0:07:20.660 onde eu não consegui [br]achar o endereço. 0:07:20.660,0:07:25.475 Então, cada código[br]vai ter ali a sua família 0:07:25.475,0:07:30.350 e dentro dessas famílias[br]os erros que ele está justificando. 0:07:30.350,0:07:33.506 Veja que só para manter [br]uma aplicação web no ar 0:07:33.506,0:07:35.817 já temos que ter[br]uma série de cuidados 0:07:35.817,0:07:38.811 e trabalhar minunciosamente [br]vários pontos. 0:07:38.811,0:07:41.354 Mas são justamente esses [br]pequenos pontos 0:07:41.354,0:07:44.693 que me permitem arquitetar [br]uma solução web 0:07:44.693,0:07:48.348 que vai ser ao mesmo tempo [br]útil e segura.