Skip to content

Latest commit

 

History

History
34 lines (22 loc) · 2.04 KB

regex.brazilian-portuguese.md

File metadata and controls

34 lines (22 loc) · 2.04 KB

Evite que RegEx maliciosos sobrecarreguem sua execução de thread único

Explicação em um Parágrafo

O risco inerente ao uso de Expressões Regulares são os recursos computacionais necessários para analisar o texto e corresponder a um determinado padrão. Para a plataforma Node.js, em que um loop de eventos de thread único é dominante, uma operação vinculada à CPU, como a resolução de um padrão de expressão regular, tornará o aplicativo sem resposta. Evite RegEx quando possível ou delege a tarefa para uma biblioteca dedicada como validator.js, ou safe-regex para verificar se a RegEx é segura.

Alguns exemplos OWASP de padrões vulneráveis de RegEx:

  • (a|aa)+
  • ([a-zA-Z]+)*



Exemplo de código - Ativando SSL/TLS usando o framework Express

var saferegex = require('safe-regex');
var emailRegex = /^([a-zA-Z0-9])(([\-.]|[_]+)?([a-zA-Z0-9]+))*(@){1}[a-z0-9]+[.]{1}(([a-z]{2,3})|([a-z]{2,3}[.]{1}[a-z]{2,3}))$/;

// deve ser falso porque o emailRegex é vulnerável a ataques de REDoS
console.log(saferegex(emailRegex));

// em vez do padrão regex, use validator:
var validator = require('validator');
console.log(validator.isEmail('liran.tal@gmail.com'));



Citação de livro: "Uma expressão regular vulnerável é conhecida como aquela que se aplica à repetição"

Do livro Essential Node.js Security por Liran Tal

Freqüentemente, os programadores usarão RegExs para validar que uma entrada recebida de um usuário, para verificar se está de acordo com uma condição esperada. Uma Expressão Regular vulnerável é conhecida como uma que aplica a repetição a um grupo de captura de repetição e em que a string a ser correspondida é composta de um sufixo de um padrão de correspondência válido, mais caracteres que não correspondem ao grupo de captura.