Alura > Cursos de DevOps > Cursos de Segurança > Conteúdos de Segurança > Primeiras aulas do curso Desenvolvimento Seguro: estratégias de segurança para dados de entrada

Desenvolvimento Seguro: estratégias de segurança para dados de entrada

Lidando com SQL Injection - Apresentação

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.

O que vamos aprender

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.

Pré-requisitos

Par que você tenha a melhor experiência nesse curso é importante que você tenha conhecimento sobre:

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?

Lidando com SQL Injection - Conhecendo a API

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.

Conhecendo 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!

Lidando com SQL Injection - Vulnerabilidade de SQL Injection

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.

Criando 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:

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 o 1 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á!

Sobre o curso Desenvolvimento Seguro: estratégias de segurança para dados de entrada

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:

Aprenda Segurança acessando integralmente esse e outros cursos, comece hoje!

Plus

De
R$ 1.800
por
12X
R$109
à vista R$1.308
  • Acesso a TODOS os cursos por 1 ano

    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.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

Matricule-se

Pro

De
R$ 2.400
por
12X
R$149
à vista R$1.788
  • Acesso a TODOS os cursos por 1 ano

    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.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

  • Luri, a inteligência artificial da Alura

    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.

  • Alura Língua - Inglês e Espanhol

    Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.

Matricule-se

Ultra

12X
R$209
à vista R$2.508
  • Acesso a TODOS os cursos por 1 ano

    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.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

  • Luri, com mensagens ILIMITADAS

    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.

  • Luri Vision, a IA que enxerga suas dúvidas

    Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.

  • Alura Língua - Inglês e Espanhol

    Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.

  • 6 Ebooks da Casa do Código

    Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.

Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas