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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.