เครื่องวิเคราะห์แบบคงที่เพื่อสแกน JavaScript และรหัส typeScript สำหรับนิพจน์ปกติที่มีปัญหา
สแกนเนอร์พร้อมใช้งานเป็นภาพคอนเทนเนอร์ที่คุณสามารถเรียกใช้กับโครงการ JavaScript หรือ TypeScript ใด ๆ ตัวอย่างเช่นการสแกนไดเรกทอรีปัจจุบัน:
docker run --rm -v $( pwd ) :/project docker.io/ericornelissen/js-re-scan:latestหมายเหตุ: หากต้องการใช้ Podman แทน Docker คุณสามารถแทนที่
dockerโดยpodmanในคำสั่งตัวอย่างใดก็ได้
หากจำเป็นคุณสามารถเพิกเฉยต่อไฟล์หรือไดเรกทอรีบางอย่างโดยใช้ตัวเลือก --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 ด้วยปลั๊กอิน ESLINT-PLUGIN-Regexp เพื่อค้นหาและรายงานเกี่ยวกับการแสดงออกปกติที่ละเมิดกฎที่มีผลกระทบด้านความปลอดภัย
การสนับสนุน TypeScript จัดทำโดย @typeScript-ESLINT/PARSER การสนับสนุน MarkDown จัดทำโดย @eslint/markdown
โครงการนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต Apache 2.0 ดูใบอนุญาตสำหรับข้อความใบอนุญาตเต็มรูปแบบ ข้อความเอกสารได้รับใบอนุญาตภายใต้ CC BY-SA 4.0
โปรดเปิดปัญหาหากคุณพบความผิดพลาดหรือหากคุณมีข้อเสนอแนะสำหรับวิธีการปรับปรุงเอกสาร