用於掃描JavaScript和打字稿代碼的靜態分析儀是否有問題的正則表達式。
掃描儀可作為容器圖像可用,您可以與任何JavaScript或打字稿項目相對。例如,掃描當前目錄:
docker run --rm -v $( pwd ) :/project docker.io/ericornelissen/js-re-scan:latest注意:要使用Podman而不是Docker,您可以在任何示例命令中替換
podman的docker。
如有必要,您可以使用選項--ignore-pattern忽略某些文件或目錄。例如,忽略供應商代碼以專注於您自己的項目中的問題:
docker run --rm -v $( pwd ) :/project docker.io/ericornelissen/js-re-scan:latest
--ignore-pattern vendor/掃描儀具有以下退出代碼。
| 退出代碼 | 意義 |
|---|---|
| 0 | 找不到問題 |
| 1 | 發現有問題的正則表達式的文件 |
| 2 | 掃描時出了問題 |
如果您發現此掃描儀有幫助,請考慮使用Eslint-Plugin-Regexp。該ESLINT插件是掃描儀為掃描儀提供動力的原因,並且可以更好地集成到您的項目現有工作流程。
請按照以下步驟更新您的ESLINT設置,以涵蓋該掃描儀的作用:
安裝插件:
npm install --save-dev eslint-plugin-regexp更新您的ESLINT配置:
ESLINT V9帶有平坦的配置:
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及更早或舊版配置:
# .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
} 如果願意,可以從頭開始構建掃描儀。從這個項目的根部運行類似:
docker build --file Containerfile .或使用便利的目標:
make build ENGINE=docker該掃描儀旨在為開發人員提供一種工具,以在其代碼中找到脆弱的正則表達式。因此,目標是僅報告真正的積極因素。結果是所有發現都是相關的,但是乾淨的報告並不意味著您的項目沒有脆弱的正則表達式。
這與諸如Redos-detector之類的工具形成鮮明對比,該工具將發現該掃描儀不會的脆弱正則表達式,但也會報告誤報。由於很難確定特定報告是否為假陽性,因此難以使用其他工具。
該掃描儀使用Eslint-Plugin-Regexp插件運行ESLINT,以查找並報告具有安全含義的規則的正則表達式。
TypeScript支持由 @typescript-eslint/Parser提供,Markdown支持由 @Eslint/Markdown提供。
該項目是根據Apache 2.0許可證獲得許可的,請參閱《完整許可文本》許可。文檔文本根據CC BY-SA 4.0許可。
如果您發現錯誤或對如何改進文檔有建議,請打開問題。