Um analisador estático para digitalizar JavaScript e código de texto digital para expressões regulares problemáticas.
O scanner está disponível como uma imagem de contêiner que você pode executar contra qualquer projeto JavaScript ou TypeScript. Por exemplo, para escanear o diretório atual:
docker run --rm -v $( pwd ) :/project docker.io/ericornelissen/js-re-scan:latestNOTA: Para usar o podman em vez do Docker, você pode substituir
dockerpelopodmanem qualquer exemplo.
Se necessário, você pode ignorar certos arquivos ou diretórios usando a opção --ignore-pattern . Por exemplo, para ignorar o código vendido para se concentrar nos problemas em seu próprio projeto que você pode usar:
docker run --rm -v $( pwd ) :/project docker.io/ericornelissen/js-re-scan:latest
--ignore-pattern vendor/O scanner possui os seguintes códigos de saída.
| Código de saída | Significado |
|---|---|
| 0 | Nenhum problema encontrado |
| 1 | Arquivos com expressões regulares problemáticas encontradas |
| 2 | Algo deu errado durante a digitalização |
Se você achou esse scanner útil, considere o uso de Eslint-Plugin-Regexp. Este plug -in ESLint é o que alimenta o scanner e pode se integrar melhor aos fluxos de trabalho existentes do seu projeto.
Siga estas etapas para atualizar sua configuração ESLint para cobrir o que esse scanner faz:
Instale o plugin:
npm install --save-dev eslint-plugin-regexpAtualize sua configuração de ESLint:
Eslint V9 com configuração plana:
import regexp from "eslint-plugin-regexp" ;
// ... other plugins you're already using
export default [
{
files : [ "**/*.{js,jsx,cjs,mjs,ts,cts,mts}" ] ,
plugins : {
regexp ,
} ,
rules : {
"regexp/no-super-linear-backtracking" : [
"error" ,
{
"report" : "certain"
}
] ,
"regexp/no-super-linear-move" : [
"error" ,
{
"ignorePartial" : false ,
"ignoreSticky" : false ,
"report" : "certain"
}
]
}
}
// ... rest of your configuration
] ;Eslint V8 e Config anterior ou Legacy:
# .eslintrc.yml or similar
plugins :
# ... other plugins you're already using
- regexp
rules :
# ... other rules you already configured
regexp/no-super-linear-backtracking :
- error
- report : certain
regexp/no-super-linear-move :
- error
- ignorePartial : false
ignoreSticky : false
report : certain
# ... rest of your configuration // .eslintrc.json, .eslintrc.js or similar
{
"plugins" : [
// ... other plugins you're already using
"regexp"
] ,
"rules" : {
// ... other rules you already configured
"regexp/no-super-linear-backtracking" : [
"error" ,
{
"report" : "certain"
}
] ,
"regexp/no-super-linear-move" : [
"error" ,
{
"ignorePartial" : false ,
"ignoreSticky" : false ,
"report" : "certain"
}
]
}
// ... rest of your configuration
} Se você quiser, pode construir o scanner a partir do zero. Da raiz deste projeto, execute algo como:
docker build --file Containerfile .Ou use a conveniência faça alvo:
make build ENGINE=dockerEsse scanner pretende fornecer aos desenvolvedores uma ferramenta para encontrar expressão regular vulnerável em seu código. Como tal, o objetivo é relatar apenas verdadeiros positivos . O resultado é que todas as descobertas são relevantes, mas um relatório limpo não significa que seu projeto não tenha expressões regulares vulneráveis.
Isso contrasta com ferramentas como o Redos-Desector, que encontrarão expressões regulares vulneráveis que esse scanner não, mas também relata falsos positivos . Como é difícil determinar se um relatório específico é um falso positivo, outras ferramentas são difíceis de usar.
Esse scanner executa o ESLint com o plug-in Eslint-Plugin-Regexp para encontrar e relatar expressões regulares que violam regras com implicações de segurança.
O suporte ao TypeScript é fornecido pelo @typenscript-eslint/analiser, o suporte de marcação é fornecido por @eslint/markdown.
Este projeto está licenciado sob a licença Apache 2.0, consulte a licença para obter o texto completo da licença. O texto da documentação é licenciado no CC BY-SA 4.0.
Abra um problema se você encontrou um erro ou se tiver uma sugestão de como melhorar a documentação.