Ein statischer Analysator zum Scannen von JavaScript- und Typscript -Code für problematische reguläre Ausdrücke.
Der Scanner ist als Containerbild verfügbar, das Sie mit jedem JavaScript- oder TypeScript -Projekt ausführen können. Zum Beispiel zum Scannen des aktuellen Verzeichnisses:
docker run --rm -v $( pwd ) :/project docker.io/ericornelissen/js-re-scan:latestHinweis: Um Podman anstelle von Docker zu verwenden, können Sie
dockerdurchpodmanin einem beliebigen Beispielbefehl ersetzen.
Bei Bedarf können Sie bestimmte Dateien oder Verzeichnisse mithilfe der Option --ignore-pattern Ignorieren. Zum Beispiel, um den damit verbundenen Code zu ignorieren, um sich auf Probleme in Ihrem eigenen Projekt zu konzentrieren, können Sie verwenden:
docker run --rm -v $( pwd ) :/project docker.io/ericornelissen/js-re-scan:latest
--ignore-pattern vendor/Der Scanner verfügt über die folgenden Exit -Codes.
| Code beenden | Bedeutung |
|---|---|
| 0 | Keine Probleme gefunden |
| 1 | Dateien mit problematischen regulären Ausdrücken gefunden |
| 2 | Während beim Scannen ging etwas schief |
Wenn Sie diesen Scanner als hilfreich empfunden haben, sollten Sie stattdessen Eslint-Plugin-Regexp verwenden. Dieses Eslint -Plugin versorgt den Scanner und kann besser in die vorhandenen Workflows Ihres Projekts integriert werden.
Befolgen Sie die folgenden Schritte, um Ihr Eslint -Setup zu aktualisieren, um zu decken, was dieser Scanner tut:
Installieren Sie das Plugin:
npm install --save-dev eslint-plugin-regexpAktualisieren Sie Ihre Eslint -Konfiguration:
Eslint v9 mit flacher Konfiguration:
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 und frühere oder Legacy -Konfiguration:
# .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
} Wenn Sie möchten, können Sie den Scanner von Grund auf neu erstellen. Aus der Wurzel dieses Projekts führen Sie so etwas wie:
docker build --file Containerfile .Oder nutzen Sie das Komfort machen Sie Ziel:
make build ENGINE=dockerDieser Scanner soll Entwicklern ein Tool zur Verfügung stellen, um einen verwundbaren regelmäßigen Ausdruck in ihrem Code zu finden. Als solches ist es das Ziel, nur echte Positive zu melden. Das Ergebnis ist, dass alle Erkenntnisse relevant sind, aber ein sauberer Bericht bedeutet nicht, dass Ihr Projekt keine verwundbaren regulären Ausdrücke hat.
Dies ist Kontrast zu Tools wie Redos-Detector, die gefährdete reguläre Ausdrücke finden, die dieser Scanner nicht, sondern auch falsch positive Ergebnisse meldet. Da es schwierig ist zu bestimmen, ob ein bestimmter Bericht falsch positiv ist, sind andere Tools schwer zu bedienen.
In diesem Scanner wird ESINTINT mit dem Eslint-Plugin-REGEXP-Plugin ausgeführt, um regelmäßige Ausdrücke zu finden und zu melden, die gegen Regeln mit Sicherheitsauswirkungen verstoßen.
Die Unterstützung von TypeScript wird von @tilescript-eSlint/Parser bereitgestellt. Der Markdown-Support wird von @Eslint/Markdown bereitgestellt.
Dieses Projekt ist unter der Lizenz von Apache 2.0 lizenziert. Siehe Lizenz für den vollständigen Lizenztext. Der Dokumentationstext ist unter CC BY-SA 4.0 lizenziert.
Bitte öffnen Sie ein Problem, wenn Sie einen Fehler gefunden haben oder einen Vorschlag zur Verbesserung der Dokumentation haben.