Skip to content

Implementação da validações de entrada com regex e whitelist. Atividade da aula 6 de segurança de aplicações (2022/1).

Notifications You must be signed in to change notification settings

jfbueno-graduacao/segapps-validacoes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Atividade 1

Crie uma expressão regular para validar cada um dos seguintes tipos de entrada:

  • Data (no formato dd/mm/aaaa)
    ^(0?[1-9]|[12][0-9]|3[01])\/(0?[1-9]|1[12])\/(\d{4})$
  • Número inteiro (pode ser positivo ou negativo)
    ^(\-?)\d+$
  • CPF
    ^(\d{3}\.\d{3}\.\d{3}\-\d{2}|\d{11})$
  • Endereço IPv4
    ^((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$

Atividade 2

Escolha um tipo de dado de entrada do exercício anterior (por exemplo, endereço IP):

  • Implemente um programa que receba o dado como entrada e o valide. O programa deve possuir 2 versões: uma que valida a entrada com expressões regulares e outra que valide com outro método (por exemplo, whitelist/blacklist ou filtragem). A implementação pode ser feita em qualquer linguagem de programação.
  • Após implementar os programas, responda: qual tipo de validação de entrada é mais robusto? Justifique sua resposta.

Sobre a implementação

Decidi implementar uma validação de CPF. A implementação foi feita no mesmo programa, o tipo de validação e os dados devem ser fornecidos via argumentos de linha de comando.

Execução do programa

Argumentos esperados:

  1. Tipo de validação: regex ou whitelist
  2. Dado para ser validado

Por exemplo, para fazer uma validação do CPF 011.291.234-23 usando regex:

$> dotnet run regex 011.291.234-23
011.291.234-23 é um CPF válido

Tipo de validação mais robusto

Como já informado, a segunda validação foi feita usando whitelist. E a validação usando regex é mais robusta em termos de desenvolvimento/manutenção e de tempo de execução.

Para conseguir fazer uma implementação realmente funcional de whitelist seria necessário listar todas as entradas válidas para o programa. Isso consumiria Gigabytes de dados, mesmo para uma informação simples como um CPF.

Além de ser um enorme trabalho para desenvolvimento e aumentar a dificuldade de manutenção, a leitura deste arquivo gigante é um processo lento e prejudica muito a experiência de uso do programa.

💡 O arquivo de whitelist usado neste exemplo apenas contém 2048 entradas. Então, o mesmo deve ser editado para validar uma entrada específica.

About

Implementação da validações de entrada com regex e whitelist. Atividade da aula 6 de segurança de aplicações (2022/1).

Topics

Resources

Stars

Watchers

Forks

Languages