Boas-vindas ao curso de Desenvolvimento seguro: estratégias de segurança para dados de entrada.
Sou a Camila e serei sua instrutora!
Audiodescrição: Camila é uma mulher com os olhos castanhos escuros, cabelos longos, pretos e encaracolados. Usa uma camiseta preta e fone de ouvido também preto. Está sentada em uma cadeira e ao fundo há uma parede lisa com iluminação degradê do roxo para o azul.
Esse curso é para pessoas Devs que possuem interesse em trabalhar com desenvolvimento seguro de aplicações.
Identificar algumas vulnerabilidades em uma API REST;
Como lidar com dados de entrada de pessoas usuárias do sistema;
Aplicar técnicas de desenvolvimento seguro, como validação e sanitização.
Para isso, usaremos a Voll Med, uma API REST de uma aplicação que faz o gerenciamento de uma clínica médica.
Realizaremos o cadastro de médicos, pacientes e consultas. Em seguida, faremos o code review desses cadastros e aplicaremos técnicas de segurança.
Par que você tenha a melhor experiência nesse curso é importante que você tenha conhecimento sobre:
HTTP: método POST
, GET
, PUT
, DELETE
, PATCH
.
CRUD: Criação, Leitura, Atualização e Exclusão.
A API Voll Med já faz todos esse passo a passo. Por isso é importante que você saiba identificá-los no banco de dados, afinal, faremos modificações nas interações.
Esperamos que você tenha se interessado pelo conteúdo!
Vamos nessa?
Nesse curso trabalharemos com a API Voll Med, na qual faremos um code review.
Antes de fazermos uma análise de vulnerabilidade, conheceremos melhor a API.
Para ter acesso Voll Med na sua máquina, basta acessar o repositório e clonar a API.
Feito isso, vamos analisá-la. Temos uma pasta nomeada de "src" que possui todos os arquivos em TypeScript, além de outros diretórios como auth
, avaliacoes
e consultas
. Isso significa que a API faz diversas requisições relacionadas a esses serviços da clínica.
Nessa mesma pasta, também encontramos os arquivos data-source.ts
e o server.ts
que estão relacionados as configurações do banco de dados e servidor.
Fora da pasta encontramos o arquivo .env
que possui algumas variáveis de ambiente que precisam ser configuradas para rodar o servidor.
E também arquivos de configurações, como o docker-compose.yaml
, que roda o servidor por meio do Docker. Faremos isso agora.
Primeiro abrimos o terminal. Depois, passamos o comando docker-compose up
seguido de "Enter".
docker-compose up
Assim, rodamos a aplicação. No nosso caso, deu um erro de conflito com a porta 3306, a qual estamos utilizando no banco de dados.
Para descobrirmos o processo que está utilizando esse comando escrevemos no terminal sudo lsof -i :3306
, seguido de "Enter".
sudo lsof -i :3306
Descobrimos que quem está utilizando é o PID USER 1870. Precisaremos matá-lo, então, passamos o comando sudo kill 1870
.
sudo kill 1870
Em seguida, passamos o comando docker-compose up
. Agora deu certo!
Lembrando que é muito importante que você faça esse comando antes de começarmos a alterar a API.
Para interagir com a API utilizaremos o Insomnia. Ao abri-lo, na lateral esquerda da tela, encontramos diversas pastas como "Autenticação", "Pacientes" e "Especialistas".
Dentro dessas pastas encontramos as requisições http, protocolos utilizados para interagir com a API.
Desenvolvemos um conteúdo explicativo no Preparando Ambiente sobre como o Insomnia deve ser configurado.
Feito isso, voltamos para o VS Code. No terminal, notamos que o servidor está pronto para ser utilizado.
Além disso, como a API é dividida em pastas por funcionalidades, você pode encontrar arquivos controladores, Controller.ts
ou entidades, Entity.ts
.
Essa é a organização da API, que também utiliza algumas ferramentas, como o Typescript, o servidor pelo Express e o banco de dados no MySQL.
Caso você não tenha familiaridade com essas ferramentas, não se preocupe. Tudo o que manipularemos ao longo do curso faremos um passo a passo bem detalhado.
O próximo passo é analisar quais são as vulnerabilidades do Voll Med. A partir disso, poderemos identificar quais melhorias podemos aplicar.
Até o próximo vídeo!
Agora que já conhecemos a API Voll Med e rodamos o comando docker-compose up
, podemos fazer requisições.
Começamos abrindo o Insomnia. Na lateral esquerda, clicamos na pasta "Paciente" e depois em POST
Cadastro Paciente.
Percebemos que a rota é feita por meio da url "localhost:3000/paciente". Nesse POST
enviaremos dados por meio de um JSON que pede diversos dados como CPF.
Para isso, utilizaremos o gerador de CPF do 4devs no navegador. Ao acessá-lo, nos deparamos com alguns campos de preenchimento.
O primeiro se refere a pontuação do CPF, como não queremos, selecionamos a opção "Não". Depois, no campo "Estado de Origem do CPF" deixamos selecionado a opção "Indiferente". Após, clicamos no botão "Gerar CPF".
Clicamos para copiar o CPF que foi gerado. Depois, voltamos para o Insomnia para criar o cadastro do paciente.
Na primeira linha de código, em cpf
, colamos o número gerado no 4devs. Em nome
, escrevemos Vinicius
e em e-mail
passamos vinicius@email.com
. Em estaAtivo
, manteremos como true
.
Abaixo encontramos outros dados, como:
endereco
cep
rua
numero
complemento
estado
senha
telefone
possuiPlanoSaude
planosSaude
histórico
imagemUrl
A única regra para criar novos pacientes é que o CPF seja único, portanto, como o restante dos dados já estavam preenchidos, manteremos.
O
planosSaude
está preenchido como[1]
, pois esse número indica um plano específico criado no front-end. Nesse caso o1
se refere a Unimed.
Considerando tudo isso, o código fica da seguinte forma:
{
"cpf": "70792109090",
"nome": "Vinicius",
"email": "vinicius@email.com",
"estaAtivo":true,
"endereco": {
"cep": 38410272,
"rua": "Rua 28",
"numero": 1020,
"complemento": "casa",
"estado": "MG"
},
"senha": "senhaforte123",
"telefone": "27999335534",
"possuiPlanoSaude": true,
"planosSaude":[1],
"historico": ["sinusite, moderado"],
"imagemurl":
"https://media.discordapp.net/attachments/885931151980658698/1121873215606751232/shutterstock_1151921795.jpg"
}
No topo direito da tela, clicamos no botão "Send" para enviar os dados. Feito isso, o paciente é cadastrado. Aparentemente está tudo certo com nossa aplicação, até mesmo um id
foi gerado para o paciente.
Na lateral esquerda do Insomnia, encontramos um GET
do tipo Consulta por Paciente, clicamos nele. Verificaremos se o paciente Vinicius foi mesmo cadastrado.
No centro da tela, encontramos a seguinte url:
http://localhost:3000/paciente/consulta-por-paciente?userInput=Camila
Conseguimos entender que o userInput
é um parâmetro que precisa ser enviado na url, nesse caso o nome do paciente. Sendo assim, apagamos o "Camila" e escrevemos "Vinicius". Feito isso, temos como resposta todos os dados do Vinicius.
Existem alguns cuidados que podemos tomar em relação a colocar nomes na url. Aprenderemos isso no vídeo seguinte.
Te esperamos lá!
O curso Desenvolvimento Seguro: estratégias de segurança para dados de entrada possui 148 minutos de vídeos, em um total de 56 atividades. Gostou? Conheça nossos outros cursos de Segurança em DevOps, ou leia nossos artigos de DevOps.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.
Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.
Emitimos certificados para atestar que você finalizou nossos cursos e formações.
Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.
Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.
Emitimos certificados para atestar que você finalizou nossos cursos e formações.
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com Luri até 100 mensagens por semana.
Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.
Acesso completo
durante 1 ano
Estude 24h/dia
onde e quando quiser
Novos cursos
todas as semanas