[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:07.86,0:00:10.40,Default,,0000,0000,0000,,No desenvolvimento \Nde uma aplicação web, Dialogue: 0,0:00:10.40,0:00:14.90,Default,,0000,0000,0000,,uma das principais coisas\Nque vamos ter é o http, Dialogue: 0,0:00:14.90,0:00:19.14,Default,,0000,0000,0000,,ele é basicamente a base de tudo\No que nós fazemos. Dialogue: 0,0:00:19.14,0:00:23.65,Default,,0000,0000,0000,,E veja, não estamos falando aqui\Nsó de aplicação para o navegador, Dialogue: 0,0:00:23.65,0:00:27.57,Default,,0000,0000,0000,,o HTTP também está embarcado\Nem aplicações mobile Dialogue: 0,0:00:27.57,0:00:32.56,Default,,0000,0000,0000,,e mesmo alguns sistemas que nós \Npensamos que foram desenvolvidos Dialogue: 0,0:00:32.56,0:00:34.49,Default,,0000,0000,0000,,com a estrutura compilada. Dialogue: 0,0:00:34.49,0:00:36.98,Default,,0000,0000,0000,,Isso porque ele trabalha \Nmuito bem Dialogue: 0,0:00:36.98,0:00:40.84,Default,,0000,0000,0000,,com essa ideia de interação \Ncliente servidor. Dialogue: 0,0:00:40.84,0:00:44.00,Default,,0000,0000,0000,,Muito disso se deve \Naos seus métodos. Dialogue: 0,0:00:44.00,0:00:46.12,Default,,0000,0000,0000,,E aí podemos destacar os principais, Dialogue: 0,0:00:46.12,0:00:50.07,Default,,0000,0000,0000,,que são: o GET\Nque eu obtenho informação, Dialogue: 0,0:00:50.07,0:00:54.22,Default,,0000,0000,0000,,o POST que eu publico \Numa informação, Dialogue: 0,0:00:54.22,0:00:59.78,Default,,0000,0000,0000,,PUT, eu adiciono uma informação \Npara alguém que já existe. Dialogue: 0,0:00:59.78,0:01:04.28,Default,,0000,0000,0000,,No caso, por exemplo, um usuário\Nou um campo que já está determinado Dialogue: 0,0:01:04.28,0:01:07.29,Default,,0000,0000,0000,,e DELETE onde eu mando \Nremover alguém. Dialogue: 0,0:01:07.29,0:01:09.47,Default,,0000,0000,0000,,Foi justamente essa estrutura Dialogue: 0,0:01:09.47,0:01:13.06,Default,,0000,0000,0000,,que moldou todo o mercado de TI\Nque conhecemos hoje em dia, Dialogue: 0,0:01:13.06,0:01:15.68,Default,,0000,0000,0000,,principalmente \Nnas aplicações web. Dialogue: 0,0:01:15.68,0:01:17.45,Default,,0000,0000,0000,,É através deles que conseguimos Dialogue: 0,0:01:17.45,0:01:20.39,Default,,0000,0000,0000,,enviar, receber ou alterar \Nalgum dado Dialogue: 0,0:01:20.39,0:01:22.98,Default,,0000,0000,0000,,nos sistemas que usamos \Nno dia a dia. Dialogue: 0,0:01:22.98,0:01:25.64,Default,,0000,0000,0000,,Mas esses caras \Nnão estão sozinhos, Dialogue: 0,0:01:25.64,0:01:27.84,Default,,0000,0000,0000,,em especial porque o HTTP Dialogue: 0,0:01:27.84,0:01:30.34,Default,,0000,0000,0000,,normalmente tem um problema \Nde segurança. Dialogue: 0,0:01:30.34,0:01:33.43,Default,,0000,0000,0000,,Esses dados estão expostos \Nna rede Dialogue: 0,0:01:33.43,0:01:36.98,Default,,0000,0000,0000,,disponível para qualquer hacker \Npoder acessar. Dialogue: 0,0:01:36.98,0:01:40.66,Default,,0000,0000,0000,,Justamente por isso \Nque veio o https, Dialogue: 0,0:01:40.66,0:01:44.61,Default,,0000,0000,0000,,onde temos a parte de segurança\Nsendo implementada. Dialogue: 0,0:01:44.61,0:01:46.00,Default,,0000,0000,0000,,E é nele, por exemplo, Dialogue: 0,0:01:46.00,0:01:48.32,Default,,0000,0000,0000,,que ganhamos a criptografia Dialogue: 0,0:01:48.32,0:01:50.86,Default,,0000,0000,0000,,dos dados \Nque estamos operando. Dialogue: 0,0:01:50.86,0:01:56.07,Default,,0000,0000,0000,,E aqui também vamos ter que ter\Nalguns detalhes a se atentar Dialogue: 0,0:01:56.07,0:02:00.59,Default,,0000,0000,0000,,toda URL que esse endereço \Nde acesso às páginas web Dialogue: 0,0:02:00.59,0:02:04.11,Default,,0000,0000,0000,,será composta \Npor protocolo Dialogue: 0,0:02:04.11,0:02:07.79,Default,,0000,0000,0000,,no caso HTTP, \No HTTPS, Dialogue: 0,0:02:07.79,0:02:10.57,Default,,0000,0000,0000,,o DNS que \Nestamos acessando, Dialogue: 0,0:02:10.57,0:02:15.59,Default,,0000,0000,0000,,que é o nome do domínio da página\Nou da aplicação que eu quero acessar, Dialogue: 0,0:02:15.59,0:02:19.98,Default,,0000,0000,0000,,e uma porta, que é um número \Nque vai lá no final. Dialogue: 0,0:02:19.98,0:02:22.97,Default,,0000,0000,0000,,E se você nunca viu \Nesse número antes, Dialogue: 0,0:02:22.97,0:02:26.13,Default,,0000,0000,0000,,é porque ele é subentendido \Nem alguns casos. Dialogue: 0,0:02:26.13,0:02:30.00,Default,,0000,0000,0000,,Por exemplo, \No HTTP utiliza a porta 80, Dialogue: 0,0:02:30.00,0:02:34.36,Default,,0000,0000,0000,,o HTTPS utiliza\Na porta 443. Dialogue: 0,0:02:34.36,0:02:36.18,Default,,0000,0000,0000,,Mas caso desenvolva, \Npor exemplo, Dialogue: 0,0:02:36.18,0:02:39.20,Default,,0000,0000,0000,,um front end ou um\Ndashboard de API, Dialogue: 0,0:02:39.20,0:02:42.57,Default,,0000,0000,0000,,é normal colocarmos esse cara\Nlá na porta 5000, Dialogue: 0,0:02:42.57,0:02:45.07,Default,,0000,0000,0000,,e aí eu preciso especificar \Nesse endereço. Dialogue: 0,0:02:45.07,0:02:48.44,Default,,0000,0000,0000,,Se nós acessamos, por exemplo,\No site do Google, Dialogue: 0,0:02:48.44,0:02:51.14,Default,,0000,0000,0000,,já podemos ver\Ncomo é que esse cara vai funcionar. Dialogue: 0,0:02:51.14,0:02:56.43,Default,,0000,0000,0000,,Notem que já temos aqui\No nosso protocolo HTTPS, Dialogue: 0,0:02:56.43,0:02:59.82,Default,,0000,0000,0000,,indicando que é só \Numa conexão segura. Dialogue: 0,0:02:59.82,0:03:02.72,Default,,0000,0000,0000,,Mas veja, não é porque \Neu tenho um https aqui Dialogue: 0,0:03:02.72,0:03:05.14,Default,,0000,0000,0000,,que eu estou 100% seguro. Dialogue: 0,0:03:05.14,0:03:10.81,Default,,0000,0000,0000,,Na realidade isso só diz\Nque eu tenho um certificado em uso, Dialogue: 0,0:03:10.81,0:03:14.52,Default,,0000,0000,0000,,não necessariamente\Nque esse é o certificado do Google, Dialogue: 0,0:03:14.52,0:03:17.16,Default,,0000,0000,0000,,já já nós vamos ver como \Né que validamos isso. Dialogue: 0,0:03:17.16,0:03:22.09,Default,,0000,0000,0000,,Na sequência\Nnós temos o endereço DNS do Google Dialogue: 0,0:03:22.09,0:03:27.19,Default,,0000,0000,0000,,e aqui está subtendido\Na porta 443. Dialogue: 0,0:03:27.19,0:03:30.75,Default,,0000,0000,0000,,"Professor, como é que conseguimos\Nvertodos esses detalhes?" Dialogue: 0,0:03:30.75,0:03:33.52,Default,,0000,0000,0000,,se clicarmos aqui\Nem cima do ícone do Google Dialogue: 0,0:03:33.52,0:03:36.85,Default,,0000,0000,0000,,ou clicar em cima \Ndo cadeado que aparece Dialogue: 0,0:03:36.85,0:03:39.73,Default,,0000,0000,0000,,quando temos \Naqui o HTTPS, Dialogue: 0,0:03:39.73,0:03:44.14,Default,,0000,0000,0000,,nós conseguimos ver \Nas informações desse site. Dialogue: 0,0:03:44.14,0:03:47.60,Default,,0000,0000,0000,,Por exemplo, ele está indicando\Nque essa conexão a segura, Dialogue: 0,0:03:47.60,0:03:50.19,Default,,0000,0000,0000,,se eu clico para pedir \Nmais informações, Dialogue: 0,0:03:50.19,0:03:54.58,Default,,0000,0000,0000,,ele me traz um briefing\Ne me traz um acesso ao certificado. Dialogue: 0,0:03:54.58,0:03:57.24,Default,,0000,0000,0000,,Onde eu consigo checar, \Npor exemplo, Dialogue: 0,0:03:57.24,0:04:00.37,Default,,0000,0000,0000,,quem foi que emitiu \Nesse certificado. Dialogue: 0,0:04:00.37,0:04:02.73,Default,,0000,0000,0000,,No caso, esse certificado\Nfoi emitido para o Google Dialogue: 0,0:04:02.73,0:04:06.58,Default,,0000,0000,0000,,por uma companhia \Nchamada "GTS CA 1C3" Dialogue: 0,0:04:06.58,0:04:10.61,Default,,0000,0000,0000,,que no caso é o próprio\Nserviço de segurança da Google. Dialogue: 0,0:04:10.61,0:04:14.12,Default,,0000,0000,0000,,Também conseguimos ver\Na data de emissão Dialogue: 0,0:04:14.19,0:04:17.09,Default,,0000,0000,0000,,e os efeitos de uso \Ndesse certificado, Dialogue: 0,0:04:17.09,0:04:19.92,Default,,0000,0000,0000,,como por exemplo \Na chave pública. Dialogue: 0,0:04:19.92,0:04:23.33,Default,,0000,0000,0000,,Isso porque toda comunicação https Dialogue: 0,0:04:23.33,0:04:26.56,Default,,0000,0000,0000,,funciona baseada \Nem chave pública e privada. Dialogue: 0,0:04:26.63,0:04:29.64,Default,,0000,0000,0000,,A chave pública \Nnós vamos utilizar Dialogue: 0,0:04:29.64,0:04:33.84,Default,,0000,0000,0000,,para assinar qualquer dado \Ne mandar para o servidor, Dialogue: 0,0:04:33.94,0:04:34.57,Default,,0000,0000,0000,,afinal, só a chave privada \Nvai abrir esse dado. Dialogue: 0,0:04:37.88,0:04:42.31,Default,,0000,0000,0000,,Já quando eu assino com a chave privada,\Na pública consegue abrir, Dialogue: 0,0:04:42.38,0:04:47.12,Default,,0000,0000,0000,,e isso não é tão interessante\Nquando eu quero garantir segurança. Dialogue: 0,0:04:47.22,0:04:49.12,Default,,0000,0000,0000,,E aí, como é que eu faço? Dialogue: 0,0:04:49.12,0:04:53.36,Default,,0000,0000,0000,,Normalmente, quando eu chamo esse site,\Na gente já negocia ali, Dialogue: 0,0:04:53.36,0:04:58.46,Default,,0000,0000,0000,,utilizando as chaves públicas,\Num acordo de senha para a gente Dialogue: 0,0:04:58.46,0:05:02.27,Default,,0000,0000,0000,,usar um outro certificado privado\Npara a gente usar. Dialogue: 0,0:05:02.33,0:05:05.10,Default,,0000,0000,0000,,E dessa forma a gente escapa\Ndesse problema Dialogue: 0,0:05:05.10,0:05:09.64,Default,,0000,0000,0000,,do assinar com a chave privada\Ne ler com a chave pública. Dialogue: 0,0:05:09.71,0:05:13.51,Default,,0000,0000,0000,,Outro detalhe importante\Né que a gente tem mais algumas informações Dialogue: 0,0:05:13.51,0:05:16.95,Default,,0000,0000,0000,,e detalhes sobre esse certificado. Dialogue: 0,0:05:17.05,0:05:20.35,Default,,0000,0000,0000,,Mas voltando aqui no quadradinho,\Nvejam que a gente também Dialogue: 0,0:05:20.35,0:05:26.66,Default,,0000,0000,0000,,vai ter algumas opções,\Ncomo os cookies que estão em uso ou mesmo Dialogue: 0,0:05:26.76,0:05:28.09,Default,,0000,0000,0000,,as informações sobre os Dialogue: 0,0:05:28.09,0:05:32.23,Default,,0000,0000,0000,,trekkings, que são os acessos\Nque a gente está pedindo. Dialogue: 0,0:05:32.30,0:05:34.90,Default,,0000,0000,0000,,Os trekkings vão ser referentes\Na basicamente Dialogue: 0,0:05:34.90,0:05:38.74,Default,,0000,0000,0000,,qualquer coisa que a gente queira acessar,\Ndesde a localização Dialogue: 0,0:05:38.80,0:05:43.34,Default,,0000,0000,0000,,ou até a possibilidade de armazenar\Nalgum dado no computador. Dialogue: 0,0:05:43.44,0:05:47.68,Default,,0000,0000,0000,,Só que o CUC ele\Né um pouquinho mais delicado, o cookie. Dialogue: 0,0:05:47.68,0:05:50.95,Default,,0000,0000,0000,,Teoricamente\Nsão dados que nós estamos salvando Dialogue: 0,0:05:50.95,0:05:54.25,Default,,0000,0000,0000,,nessa máquina\Npara acelerar a nossa página. Dialogue: 0,0:05:54.32,0:05:56.86,Default,,0000,0000,0000,,Ela é uma espécie de client side Dialogue: 0,0:05:56.86,0:05:59.59,Default,,0000,0000,0000,,ou processamento do lado cliente, Dialogue: 0,0:05:59.59,0:06:03.53,Default,,0000,0000,0000,,aonde a gente\Nconsegue aliviar o tráfego do servidor, Dialogue: 0,0:06:03.63,0:06:06.96,Default,,0000,0000,0000,,só que expondo ao risco de ter parte Dialogue: 0,0:06:06.96,0:06:10.30,Default,,0000,0000,0000,,do meu código disponível\Nna máquina do usuário. Dialogue: 0,0:06:10.37,0:06:14.64,Default,,0000,0000,0000,,Além disso, Cookie também salva\Nvários outros componentes da página, Dialogue: 0,0:06:14.74,0:06:18.68,Default,,0000,0000,0000,,como fotos muito acessadas,\Nlogomarcas e coisas do gênero. Dialogue: 0,0:06:18.74,0:06:21.38,Default,,0000,0000,0000,,Então ele está em Minas sendo usado. Dialogue: 0,0:06:21.38,0:06:24.92,Default,,0000,0000,0000,,O problema é qual dado eu to passando\Npra ele já. Dialogue: 0,0:06:24.92,0:06:28.89,Default,,0000,0000,0000,,Quando a gente fala do server side,\Nele vai compor Dialogue: 0,0:06:28.99,0:06:32.52,Default,,0000,0000,0000,,todos os dados\Nque a gente tem do lado do servidor Dialogue: 0,0:06:32.59,0:06:35.53,Default,,0000,0000,0000,,e aí a gente termina\Ntendo um pouco mais de segurança. Dialogue: 0,0:06:35.53,0:06:38.100,Default,,0000,0000,0000,,Eu vou me preocupar muito com o ataque\Nque vou tentar explorar, Dialogue: 0,0:06:39.10,0:06:42.07,Default,,0000,0000,0000,,mas isso tudo vai vir via rede Dialogue: 0,0:06:42.10,0:06:47.64,Default,,0000,0000,0000,,e não simplesmente disponibilizei esse\Ncódigo aberto para todo mundo. Dialogue: 0,0:06:47.74,0:06:48.74,Default,,0000,0000,0000,,Além disso, Dialogue: 0,0:06:48.74,0:06:52.58,Default,,0000,0000,0000,,essa nossa\Ninteração nem sempre é bem sucedida Dialogue: 0,0:06:52.64,0:06:56.18,Default,,0000,0000,0000,,e justamente por isso o HTTP tem códigos. Dialogue: 0,0:06:56.28,0:06:59.28,Default,,0000,0000,0000,,Toda vez que você recebe um código\N200, por exemplo, Dialogue: 0,0:06:59.35,0:07:02.55,Default,,0000,0000,0000,,é porque a sua solicitação deu certo. Dialogue: 0,0:07:02.62,0:07:06.69,Default,,0000,0000,0000,,Toda a família 200\Nquer dizer, solicitação bem sucedida. Dialogue: 0,0:07:06.76,0:07:10.06,Default,,0000,0000,0000,,Já quando a gente fala da família 500,\Na gente está falando Dialogue: 0,0:07:10.06,0:07:12.03,Default,,0000,0000,0000,,da família, dos erros. Dialogue: 0,0:07:12.03,0:07:15.67,Default,,0000,0000,0000,,O famoso erro 404 já está noutra família Dialogue: 0,0:07:15.67,0:07:20.64,Default,,0000,0000,0000,,para indicar falha no server side,\Naonde eu não consegui achar o endereço. Dialogue: 0,0:07:20.74,0:07:25.48,Default,,0000,0000,0000,,Então cada código\Nvai ter ali a sua família Dialogue: 0,0:07:25.54,0:07:30.48,Default,,0000,0000,0000,,e dentro dessas famílias\Nos erros que ele está justificando. Dialogue: 0,0:07:30.55,0:07:33.55,Default,,0000,0000,0000,,Veja que só para manter uma aplicação\Nweb no ar Dialogue: 0,0:07:33.58,0:07:34.39,Default,,0000,0000,0000,,a gente já tem que ter Dialogue: 0,0:07:34.39,0:07:38.72,Default,,0000,0000,0000,,uma série de cuidados\Ne trabalhar minunciosamente vários pontos. Dialogue: 0,0:07:38.82,0:07:41.46,Default,,0000,0000,0000,,Mas são justamente esses pequenos pontos Dialogue: 0,0:07:41.46,0:07:44.76,Default,,0000,0000,0000,,que me permitem arquitetar uma solução web Dialogue: 0,0:07:44.83,0:07:48.57,Default,,0000,0000,0000,,que vai ser ao\Nmesmo tempo útil e segura. E.