ພາສາອັງກິດພາສາຝຣັ່ງແອສປາໂຍນ

Ad


OnWorks favicon

flawfinder - ອອນລາຍໃນຄລາວ

ດໍາເນີນການ flawfinder ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຟຣີຜ່ານ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ນີ້ແມ່ນຂໍ້ບົກຜ່ອງຄໍາສັ່ງທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


flawfinder - lexically ຊອກຫາຂໍ້ບົກພ່ອງດ້ານຄວາມປອດໄພທີ່ເປັນໄປໄດ້ (" hits") ໃນລະຫັດແຫຼ່ງ

ສະຫຼຸບສັງລວມ


flawfinder [- ຊ່ວຍ|-h] [- ການປ່ຽນແປງ] [--ລາຍການ]
[--allowlink] [--followdotdir] [--nolink]
[--patch=ຊື່​ເອ​ກະ​ສານ|-P ຊື່​ເອ​ກະ​ສານ]
[-- ວັດສະດຸປ້ອນ|-I] [ --minlevel=X | -m X ] [--falsepositive|-F]
[-- ບໍ່ເຄີຍລະເລີຍ|-n]
[--regex=PATTERN | -e PATTERN]
[--ສະພາບການ|-c] [--ຖັນ|-C] [--dataonly|-D] [--html|-H] [-- ທັນ​ທີ​ທັນ​ໃດ​|-i]
[--ສາຍດ່ຽວ|-S] [--ເວລາຫວ່າງ] [--ງຽບ|-Q]
[--loadhitlist=F] [--savehitlist=F] [--diffhitlist=F]
[--] [ ແຫຼ່ງ ລະຫັດ ເອກະສານ or ແຫຼ່ງ ຮາກ ລະບົບ ]+

ລາຍລະອຽດ


Flawfinder ຄົ້ນຫາຜ່ານລະຫັດແຫຼ່ງ C/C++ ຊອກຫາຂໍ້ບົກພ່ອງດ້ານຄວາມປອດໄພທີ່ເປັນໄປໄດ້. ເຖິງ
ດໍາເນີນການ flawfinder, ພຽງແຕ່ໃຫ້ flawfinder ບັນຊີລາຍຊື່ຂອງໄດເລກະທໍລີຫຼືໄຟລ໌. ສໍາລັບແຕ່ລະໄດເລກະທໍລີ
ໃຫ້, ໄຟລ໌ທັງຫມົດທີ່ມີການຂະຫຍາຍຊື່ໄຟລ໌ C/C++ ໃນໄດເລກະທໍລີນັ້ນ (ແລະຂອງມັນ
subdirectories, recursively) ຈະຖືກກວດສອບ. ດັ່ງນັ້ນ, ສໍາລັບໂຄງການສ່ວນໃຫຍ່, ພຽງແຕ່ໃຫ້
flawfinder ຊື່​ຂອງ​ລະ​ບົບ​ທີ່​ສູງ​ສຸດ​ຂອງ​ລະ​ຫັດ​ແຫຼ່ງ (ໃຊ້ ``.'' ສໍາ​ລັບ​ປັດ​ຈຸ​ບັນ​
directory), ແລະ flawfinder ຈະກວດສອບລະຫັດແຫຼ່ງ C/C++ ທັງໝົດຂອງໂຄງການ. ຖ້າ​ເຈົ້າ
ພຽງ​ແຕ່​ຕ້ອງ​ການ​ທີ່​ຈະ​ມີ​ ການປ່ຽນແປງ ທົບທວນຄືນ, ບັນທຶກຄວາມແຕກຕ່າງທີ່ປະສົມປະສານຂອງການປ່ຽນແປງເຫຼົ່ານັ້ນ (ສ້າງໂດຍ GNU
"diff -u" ຫຼື "svn diff" ຫຼື "git diff") ໃນໄຟລ໌ patch ແລະໃຊ້ທາງເລືອກ --patch (-P).

Flawfinder ຈະຜະລິດບັນຊີລາຍຊື່ຂອງ `` hits '' (ຂໍ້ບົກພ່ອງດ້ານຄວາມປອດໄພທີ່ເປັນໄປໄດ້), ຈັດຮຽງຕາມຄວາມສ່ຽງ; ໄດ້
hits ທີ່ມີຄວາມສ່ຽງທີ່ສຸດແມ່ນສະແດງໃຫ້ເຫັນຄັ້ງທໍາອິດ. ລະດັບຄວາມສ່ຽງແມ່ນສະແດງຢູ່ໃນວົງເລັບສີ່ຫລ່ຽມແລະແຕກຕ່າງກັນ
ຈາກ 0, ຄວາມສ່ຽງຫນ້ອຍຫຼາຍ, ຫາ 5, ຄວາມສ່ຽງທີ່ຍິ່ງໃຫຍ່. ລະດັບຄວາມສ່ຽງນີ້ບໍ່ພຽງແຕ່ຂຶ້ນກັບ
function, ແຕ່ກ່ຽວກັບຄ່າຂອງພາລາມິເຕີຂອງຟັງຊັນ. ຕົວຢ່າງ, ຄົງທີ່
ສະຕຣິງມັກຈະມີຄວາມສ່ຽງໜ້ອຍກວ່າສະຕຣິງທີ່ປ່ຽນແປງໄດ້ທັງໝົດໃນຫຼາຍສະພາບການ, ແລະໃນນັ້ນ
ສະພາບການທີ່ຖືກຕີຈະມີລະດັບຄວາມສ່ຽງຕໍ່າລົງ. Flawfinder ຮູ້ກ່ຽວກັບ gettext (ທົ່ວໄປ
ຫໍສະຫມຸດສໍາລັບໂຄງການສາກົນ) ແລະຈະຮັກສາສາຍຄົງທີ່ຜ່ານ
gettext ຄືກັບວ່າພວກເຂົາເປັນສາຍຄົງທີ່; ນີ້ຫຼຸດຜ່ອນຈໍານວນຂອງ hits ທີ່ບໍ່ຖືກຕ້ອງໃນ
ໂຄງການສາກົນ. Flawfinder ຈະເຮັດສິ່ງດຽວກັນກັບ _T() ແລະ
_TEXT(), macros Microsoft ທົ່ວໄປສໍາລັບການຈັດການໂຄງການສາກົນ. Flawfinder
ບໍ່ສົນໃຈຂໍ້ຄວາມສ່ວນໃຫຍ່ພາຍໃນຄຳເຫັນ ແລະສະຕຣິງຢ່າງຖືກຕ້ອງ. ໂດຍປົກກະຕິ flawfinder ສະແດງໃຫ້ເຫັນທັງຫມົດ
hits ທີ່ມີລະດັບຄວາມສ່ຽງຢ່າງຫນ້ອຍ 1, ແຕ່ທ່ານສາມາດນໍາໃຊ້ທາງເລືອກ --minlevel ເພື່ອສະແດງໃຫ້ເຫັນພຽງແຕ່
hits ທີ່ມີລະດັບຄວາມສ່ຽງສູງຖ້າທ່ານຕ້ອງການ. ລາຍ​ລະ​ອຽດ Hit ຍັງ​ສັງ​ເກດ​ກ່ຽວ​ກັບ​ທົ່ວ​ໄປ​
Weakness Enumeration (CWE) ຕົວລະບຸໃນວົງເລັບ, ດັ່ງທີ່ໄດ້ສົນທະນາຂ້າງລຸ່ມນີ້. Flawfinder
ແມ່ນ CWE-ເຂົ້າກັນໄດ້ຢ່າງເປັນທາງການ.

ບໍ່ແມ່ນທຸກໆການຕີແມ່ນຄວາມອ່ອນແອທາງດ້ານຄວາມປອດໄພ, ແລະບໍ່ແມ່ນທຸກຄວາມສ່ຽງດ້ານຄວາມປອດໄພ
ຈໍາເປັນຕ້ອງໄດ້ພົບເຫັນ. ຢ່າງໃດກໍຕາມ, flawfinder ສາມາດເປັນການຊ່ວຍເຫຼືອໃນການຊອກຫາແລະເອົາອອກ
ຄວາມອ່ອນແອດ້ານຄວາມປອດໄພ. ວິທີການທົ່ວໄປທີ່ຈະໃຊ້ flawfinder ແມ່ນທໍາອິດນໍາໃຊ້ flawfinder ກັບ
ຊຸດຂອງລະຫັດແຫຼ່ງແລະກວດເບິ່ງລາຍການທີ່ມີຄວາມສ່ຽງສູງສຸດ. ຈາກນັ້ນ, ໃຊ້ --inputs ເພື່ອກວດສອບ
ສະ​ຖານ​ທີ່​ປ້ອນ​ຂໍ້​ມູນ​, ແລະ​ກວດ​ສອບ​ເພື່ອ​ເຮັດ​ໃຫ້​ແນ່​ໃຈວ່​າ​ມີ​ພຽງ​ແຕ່​ຄຸນ​ຄ່າ​ການ​ປ້ອນ​ຂໍ້​ມູນ​ຕາມ​ກົດ​ຫມາຍ​ແລະ​ປອດ​ໄພ​
ຍອມຮັບຈາກຜູ້ໃຊ້ທີ່ບໍ່ເຊື່ອຖື.

ເມື່ອທ່ານໄດ້ກວດສອບໂຄງການ, ທ່ານສາມາດຫມາຍສາຍລະຫັດແຫຼ່ງທີ່ຕົວຈິງແລ້ວດີແຕ່
ເຮັດໃຫ້ການເຕືອນໄພ spurious ດັ່ງນັ້ນ flawfinder ຈະຢຸດເຊົາການຈົ່ມກ່ຽວກັບເຂົາເຈົ້າ. ເພື່ອເປັນເຄື່ອງໝາຍ ກ
ເສັ້ນເພື່ອໃຫ້ຄໍາເຕືອນເຫຼົ່ານີ້ຖືກສະກັດກັ້ນ, ໃຫ້ຄໍາເຫັນທີ່ມີຮູບແບບພິເສດ
ເສັ້ນດຽວກັນ (ຫຼັງຈາກລະຫັດແຫຼ່ງ) ຫຼືທັງຫມົດໂດຍຕົວມັນເອງໃນແຖວທີ່ຜ່ານມາ. ຄໍາເຫັນ
ຕ້ອງມີຫນຶ່ງໃນສອງຮູບແບບຕໍ່ໄປນີ້:

· // Flawfinder: ບໍ່ສົນໃຈ

· /* Flawfinder: ບໍ່ສົນໃຈ */

ເພື່ອຄວາມເຂົ້າກັນໄດ້, ທ່ານສາມາດປ່ຽນແທນ "Flawfinder:" ດ້ວຍ "ITS4:" ຫຼື "RATS:" ໃນສິ່ງເຫຼົ່ານີ້.
ຄໍາ​ເຫັນ​ທີ່​ມີ​ຮູບ​ແບບ​ພິ​ເສດ​. ເນື່ອງຈາກວ່າມັນເປັນໄປໄດ້ວ່າສາຍດັ່ງກ່າວຜິດພາດ, ທ່ານສາມາດນໍາໃຊ້
ທາງເລືອກ --neverignore, ເຊິ່ງເຮັດໃຫ້ flawfinder ບໍ່ເຄີຍບໍ່ສົນໃຈສາຍໃດກໍ່ຕາມ
ຄໍາສັ່ງຄໍາເຫັນເວົ້າວ່າ (ສັບສົນຫຼາຍ, --neverignore ignores ignores).

Flawfinder ໃຊ້ຖານຂໍ້ມູນພາຍໃນທີ່ເອີ້ນວ່າ ``ruleset''; ກົດລະບຽບກໍານົດ
ຫນ້າທີ່ເປັນສາເຫດທົ່ວໄປຂອງຂໍ້ບົກພ່ອງດ້ານຄວາມປອດໄພ. ກົດລະບຽບມາດຕະຖານປະກອບມີຂະຫນາດໃຫຍ່
ຈໍານວນຂອງບັນຫາທີ່ເປັນໄປໄດ້ທີ່ແຕກຕ່າງກັນ, ລວມທັງທັງສອງບັນຫາທົ່ວໄປທີ່ສາມາດສົ່ງຜົນກະທົບໃດໆ
ໂປຣແກມ C/C++, ເຊັ່ນດຽວກັນກັບຫນ້າທີ່ສະເພາະຂອງ Unix ແລະ Windows ທີ່ມີ
ໂດຍສະເພາະແມ່ນບັນຫາ. ທາງເລືອກ --listrules ລາຍງານບັນຊີລາຍຊື່ຂອງກົດລະບຽບໃນປະຈຸບັນແລະ
ລະດັບຄວາມສ່ຽງເລີ່ມຕົ້ນຂອງພວກເຂົາ. ດັ່ງທີ່ໄດ້ກ່າວໄວ້ຂ້າງເທິງ, ທຸກໆຂໍ້ບົກພ່ອງດ້ານຄວາມປອດໄພທີ່ອາດຈະພົບເຫັນຢູ່ໃນສິ່ງທີ່ໃຫ້
ໄຟລ໌ລະຫັດແຫຼ່ງ (ກົງກັບລາຍການໃນຊຸດກົດລະບຽບ) ເອີ້ນວ່າ ``hit,´ ແລະຊຸດຂອງ
hits ທີ່ພົບເຫັນໃນລະຫວ່າງການດໍາເນີນການໂດຍສະເພາະຂອງໂຄງການໃດເອີ້ນວ່າ hitlists `` hitlists
ສາ​ມາດ​ໄດ້​ຮັບ​ການ​ບັນ​ທຶກ​ໄວ້ (ໂດຍ​ນໍາ​ໃຊ້ --savehitlist​)​, reloaded ກັບ​ຄືນ​ໄປ​ບ່ອນ​ສໍາ​ລັບ​ການ redisplay (ໂດຍ​ນໍາ​ໃຊ້ --loadhitlist​)​, ແລະ
ທ່ານສາມາດສະແດງພຽງແຕ່ hits ທີ່ແຕກຕ່າງຈາກການແລ່ນອື່ນ (ໂດຍໃຊ້ --diffhitlist).

Flawfinder ເປັນ​ເຄື່ອງ​ມື​ທີ່​ງ່າຍ​ດາຍ​, ນໍາ​ໄປ​ສູ່​ບາງ pros ແລະ cons ພື້ນ​ຖານ​. Flawfinder ເຮັດວຽກ
ໂດຍການເຮັດ tokenization lexical ງ່າຍດາຍ (ຂ້າມຄໍາເຫັນແລະສາຍ tokenizing ຢ່າງຖືກຕ້ອງ),
ຊອກຫາການຈັບຄູ່ token ກັບຖານຂໍ້ມູນ (ໂດຍສະເພາະເພື່ອຊອກຫາຫນ້າທີ່ໂທຫາ).
Flawfinder ດັ່ງນັ້ນຈຶ່ງຄ້າຍຄືກັນກັບ RATS ແລະ ITS4, ເຊິ່ງຍັງໃຊ້ tokenization lexical ງ່າຍດາຍ.
ຫຼັງຈາກນັ້ນ Flawfinder ກວດເບິ່ງຂໍ້ຄວາມຂອງຕົວກໍານົດການທໍາງານເພື່ອຄາດຄະເນຄວາມສ່ຽງ. ບໍ່​ມັກ
ເຄື່ອງມືເຊັ່ນ: splint, ທຸງເຕືອນໄພຂອງ gcc, ແລະ clang, flawfinder ເຮັດ ບໍ່ ໃຊ້ຫຼືມີ
ການ​ເຂົ້າ​ເຖິງ​ຂໍ້​ມູນ​ກ່ຽວ​ກັບ​ການ​ຄວບ​ຄຸມ​, ການ​ໄຫຼ​ຂອງ​ຂໍ້​ມູນ​, ຫຼື​ປະ​ເພດ​ຂໍ້​ມູນ​ໃນ​ເວ​ລາ​ທີ່​ການ​ຊອກ​ຫາ​
ຄວາມອ່ອນແອທີ່ອາດຈະເກີດຂຶ້ນຫຼືການປະເມີນລະດັບຄວາມສ່ຽງ. ດັ່ງນັ້ນ, flawfinder ຈະ
ຈໍາເປັນຕ້ອງໄດ້ຜະລິດຜົນບວກທີ່ບໍ່ຖືກຕ້ອງຈໍານວນຫຼາຍສໍາລັບຄວາມອ່ອນແອແລະບໍ່ສາມາດລາຍງານຈໍານວນຫຼາຍ
ຄວາມອ່ອນແອ. ໃນອີກດ້ານຫນຶ່ງ, flawfinder ສາມາດຊອກຫາຊ່ອງໂຫວ່ໃນໂຄງການທີ່
ບໍ່ສາມາດສ້າງຫຼືບໍ່ສາມາດເຊື່ອມຕໍ່ໄດ້. ມັນມັກຈະສາມາດເຮັດວຽກກັບບັນດາໂຄງການທີ່ບໍ່ສາມາດເຮັດໄດ້
ລວບລວມ (ຢ່າງຫນ້ອຍໂດຍເຄື່ອງມືຂອງຜູ້ທົບທວນ). Flawfinder ຍັງບໍ່ໄດ້ຮັບການສັບສົນໂດຍ
ນິຍາມມະຫາພາກ ແລະສິ່ງແປກປະຫຼາດອື່ນໆທີ່ເຄື່ອງມືທີ່ຊັບຊ້ອນຫຼາຍມີບັນຫາ.
Flawfinder ຍັງສາມາດເປັນປະໂຫຍດເປັນການແນະນໍາທີ່ງ່າຍດາຍຂອງເຄື່ອງມືການວິເຄາະ static ໃນ
ໂດຍທົ່ວໄປ, ເນື່ອງຈາກວ່າມັນງ່າຍທີ່ຈະເລີ່ມຕົ້ນການນໍາໃຊ້ແລະເຂົ້າໃຈງ່າຍ.

ຊື່ໄຟລ໌ໃດໆທີ່ໃຫ້ຢູ່ໃນເສັ້ນຄໍາສັ່ງຈະຖືກກວດສອບ (ເຖິງແມ່ນວ່າມັນບໍ່ມີປົກກະຕິ
ນາມສະກຸນ C/C++); ດັ່ງນັ້ນທ່ານສາມາດບັງຄັບ flawfinder ກວດເບິ່ງໄຟລ໌ສະເພາະໃດໆທີ່ທ່ານ
ຄວາມປາຖະຫນາ. ໃນຂະນະທີ່ຄົ້ນຫາໄດເລກະທໍລີ recursively, flawfinder ພຽງແຕ່ເປີດແລະກວດສອບ
ໄຟລ໌ປົກກະຕິທີ່ມີການຂະຫຍາຍຊື່ໄຟລ໌ C/C++. Flawfinder ສົມມຸດວ່າໄຟລ໌ແມ່ນ
ໄຟລ໌ C/C++ ຖ້າພວກມັນມີສ່ວນຂະຫຍາຍ ".c", ".h", ".ec", ".ecp", ".pgc", ".C", ".cpp",
".CPP", ".cxx", ".cc", ".CC", ".pcc", ".hpp", ຫຼື ".H". ຊື່ໄຟລ໌ ``-'' ຫມາຍຄວາມວ່າ
ວັດສະດຸປ້ອນມາດຕະຖານ. ເພື່ອປ້ອງກັນບັນຫາຄວາມປອດໄພ, ໄຟລ໌ພິເສດ (ເຊັ່ນ: ໄຟລ໌ພິເສດຂອງອຸປະກອນ
ແລະທໍ່ທີ່ມີຊື່) ຖືກຂ້າມຢູ່ສະ ເໝີ, ແລະໂດຍຄ່າເລີ່ມຕົ້ນການເຊື່ອມຕໍ່ສັນຍາລັກຈະຖືກຂ້າມ (the
--allowlink ທາງເລືອກປະຕິບັດຕາມການເຊື່ອມຕໍ່ສັນຍາລັກ).

ຫຼັງຈາກບັນຊີລາຍຊື່ຂອງ hits ແມ່ນສະຫຼຸບໂດຍຫຍໍ້ຂອງຜົນໄດ້ຮັບ (ໃຊ້ -D ເພື່ອເອົາມັນອອກ
ຂໍ້​ມູນ). ມັນຈະສະແດງຈໍານວນ hits, ສາຍການວິເຄາະ (ຕາມລາຍງານໂດຍ wc -l), ແລະ
ເສັ້ນແຫຼ່ງທາງກາຍະພາບຂອງລະຫັດ (SLOC) ວິເຄາະ. SLOC ທາງກາຍຍະພາບແມ່ນບໍ່ແມ່ນຫວ່າງເປົ່າ, ບໍ່ແມ່ນ.
ເສັ້ນສະແດງຄວາມຄິດເຫັນ. ຫຼັງຈາກນັ້ນມັນຈະສະແດງຈໍານວນ hits ໃນແຕ່ລະລະດັບ; ໃຫ້ສັງເກດວ່າຈະມີ
ບໍ່ເຄີຍຖືກຕີໃນລະດັບຕ່ໍາກວ່າ minlevel (1 ໂດຍຄ່າເລີ່ມຕົ້ນ). ດັ່ງນັ້ນ, "[0] 0 [1] 9"
ຫມາຍຄວາມວ່າໃນລະດັບ 0 ມີ 0 hits ລາຍງານ, ແລະໃນລະດັບ 1 ມີ 9 hits
ລາຍງານ. ຕໍ່ໄປມັນຈະສະແດງຈໍານວນ hits ໃນລະດັບໃດຫນຶ່ງຫຼືໃຫຍ່ກວ່າ (ດັ່ງນັ້ນລະດັບ 3+
ມີຜົນລວມຂອງຈໍານວນ hits ໃນລະດັບ 3, 4, ແລະ 5). ດັ່ງນັ້ນ, ການເຂົ້າຂອງ "[0+] 37"
ສະ​ແດງ​ໃຫ້​ເຫັນ​ວ່າ​ໃນ​ລະ​ດັບ 0 ຫຼື​ສູງ​ກວ່າ​ມີ 37 hits (ການ​ເຂົ້າ 0+ ຈະ​ສະ​ເຫມີ​ໄປ​ຄື​ກັນ​
ເປັນຕົວເລກ "ຕີ" ຂ້າງເທິງ). Hits ຕໍ່ KSLOC ແມ່ນສະແດງໃຫ້ເຫັນຕໍ່ໄປ; ນີ້ແມ່ນແຕ່ລະ "ລະດັບຫຼື
ສູງກວ່າ" ຄ່າຄູນດ້ວຍ 1000 ແລະຫານດ້ວຍ SLOC ທາງກາຍຍະພາບ. ຖ້າ symlinks ແມ່ນ
ຂ້າມໄປ, ຈໍານວນເຫຼົ່ານັ້ນໄດ້ຖືກລາຍງານ. ຖ້າ hits ຖືກສະກັດກັ້ນ (ໃຊ້ "ບໍ່ສົນໃຈ"
ຄໍາສັ່ງໃນຄໍາຄິດຄໍາເຫັນລະຫັດແຫຼ່ງທີ່ອະທິບາຍຂ້າງເທິງ), ຈໍານວນທີ່ຖືກສະກັດກັ້ນຖືກລາຍງານ.
ລະດັບຄວາມສ່ຽງຕໍ່າສຸດທີ່ຈະລວມຢູ່ໃນບົດລາຍງານແມ່ນສະແດງ; ໂດຍຄ່າເລີ່ມຕົ້ນນີ້ແມ່ນ 1
(ໃຊ້ --minlevel ເພື່ອປ່ຽນອັນນີ້). ບົດສະຫຼຸບສິ້ນສຸດລົງດ້ວຍການເຕືອນທີ່ສໍາຄັນ: ບໍ່ແມ່ນທຸກໆຄັ້ງ
ມີຄວາມຈໍາເປັນດ້ານຄວາມປອດໄພ, ແລະອາດຈະມີຊ່ອງໂຫວ່ດ້ານຄວາມປອດໄພອື່ນໆ
ບໍ່ໄດ້ລາຍງານໂດຍເຄື່ອງມື.

Flawfinder ຖືກປ່ອຍອອກມາພາຍໃຕ້ໃບອະນຸຍາດ GNU GPL ຮຸ່ນ 2 ຫຼືຫຼັງຈາກນັ້ນ (GPLv2+).

Flawfinder ເຮັດວຽກຄ້າຍຄືກັນກັບໂຄງການອື່ນ, ITS4, ເຊິ່ງບໍ່ແມ່ນແຫຼ່ງເປີດຢ່າງເຕັມທີ່
ຊອບ​ແວ (ຕາມ​ທີ່​ກໍາ​ນົດ​ໄວ້​ໃນ​ຄໍາ​ນິ​ຍາມ​ແຫຼ່ງ​ເປີດ​) ຫຼື​ຊອບ​ແວ​ຟຣີ (ຕາມ​ທີ່​ກໍາ​ນົດ​ໂດຍ
Free Software Foundation). ຜູ້ຂຽນຂອງ Flawfinder ບໍ່ເຄີຍເຫັນລະຫັດແຫຼ່ງຂອງ ITS4.

ບໍລິສັດ BRIEF TUTORIAL


ນີ້ແມ່ນຕົວຢ່າງສັ້ນໆຂອງວິທີການ flawfinder ອາດຈະຖືກນໍາໃຊ້. ຈິນຕະນາການວ່າທ່ານມີ C/C ++
ລະຫັດແຫຼ່ງສໍາລັບບາງໂຄງການທີ່ມີຊື່ xyzzy (ທີ່ທ່ານອາດຈະຫຼືອາດຈະບໍ່ໄດ້ຂຽນ), ແລະ
ທ່ານກໍາລັງຊອກຫາຊ່ອງໂຫວ່ດ້ານຄວາມປອດໄພ (ດັ່ງນັ້ນທ່ານສາມາດແກ້ໄຂໃຫ້ເຂົາເຈົ້າກ່ອນລູກຄ້າ
ພົບກັບຈຸດອ່ອນ). ສໍາລັບການສອນນີ້, ຂ້ອຍຈະສົມມຸດວ່າເຈົ້າກໍາລັງໃຊ້ Unix-
ເຊັ່ນ: Linux, OpenBSD, ຫຼື MacOS X.

ຖ້າລະຫັດແຫຼ່ງຢູ່ໃນໄດເລກະທໍລີຍ່ອຍທີ່ມີຊື່ວ່າ xyzzy, ທ່ານອາດຈະເລີ່ມຕົ້ນໂດຍການເປີດ a
ປ່ອງຢ້ຽມຂໍ້ຄວາມແລະການນໍາໃຊ້ການຕັ້ງຄ່າເລີ່ມຕົ້ນຂອງ flawfinder, ເພື່ອວິເຄາະໂຄງການແລະລາຍງານ a
ບັນຊີລາຍຊື່ບູລິມະສິດຂອງຄວາມສ່ຽງດ້ານຄວາມປອດໄພທີ່ອາດຈະເກີດຂຶ້ນ (``ຫນ້ອຍ'' ພຽງແຕ່ເຮັດໃຫ້ແນ່ໃຈວ່າ
ຜົນໄດ້ຮັບຢູ່ໃນຫນ້າຈໍ):
flawfinder xyzzy | ຫນ້ອຍ

ໃນຈຸດນີ້, ທ່ານຈະເຫັນລາຍການຈໍານວນຫລາຍ. ແຕ່ລະລາຍການມີຊື່ໄຟລ໌, a
ຈໍ້າສອງເມັດ, ຕົວເລກແຖວ, ລະດັບຄວາມສ່ຽງໃນວົງເລັບ (ບ່ອນທີ່ 5 ມີຄວາມສ່ຽງທີ່ສຸດ), ປະເພດ,
ຊື່ຂອງຟັງຊັນ, ແລະຄໍາອະທິບາຍວ່າເປັນຫຍັງ flawfinder ຄິດວ່າເສັ້ນເປັນ
ຄວາມອ່ອນແອ. Flawfinder ປົກກະຕິຈັດຮຽງຕາມລະດັບຄວາມສ່ຽງ, ສະແດງລາຍການທີ່ມີຄວາມສ່ຽງທີ່ສຸດກ່ອນ;
ຖ້າທ່ານມີເວລາຈໍາກັດ, ມັນອາດຈະດີທີ່ສຸດທີ່ຈະເລີ່ມຕົ້ນເຮັດວຽກໃນລາຍການທີ່ມີຄວາມສ່ຽງທີ່ສຸດແລະ
ສືບຕໍ່ຈົນກວ່າເຈົ້າຈະໝົດເວລາ. ຖ້າທ່ານຕ້ອງການຈໍາກັດການສະແດງຜົນກັບຄວາມສ່ຽງທີ່ມີພຽງແຕ່ a
ລະດັບຄວາມສ່ຽງທີ່ແນ່ນອນຫຼືສູງກວ່າ, ໃຊ້ຕົວເລືອກ --minlevel. ຖ້າ​ຫາກ​ວ່າ​ທ່ານ​ກໍາ​ລັງ​ໄດ້​ຮັບ​
ຈໍານວນບວກທີ່ບໍ່ຖືກຕ້ອງຍ້ອນວ່າຊື່ທີ່ປ່ຽນແປງໄດ້ເບິ່ງຄືວ່າເປັນອັນຕະລາຍ
ຊື່ຟັງຊັນ, ໃຊ້ຕົວເລືອກ -F ເພື່ອເອົາບົດລາຍງານກ່ຽວກັບພວກມັນອອກ. ຖ້າເຈົ້າບໍ່ເຂົ້າໃຈ
ຂໍ້​ຄວາມ​ຜິດ​ພາດ​, ກະ​ລຸ​ນາ​ເບິ່ງ​ເອ​ກະ​ສານ​ເຊັ່ນ​: ໄດ້​ ລາຍລັກອັກສອນ ຄວາມປອດໄພ ໂຄງການ ສໍາລັບການ Linux ແລະ
Unix ວິທີhttp://www.dwheeler.com/secure-programs⟩ ຢູ່ http://www.dwheeler.com/secure-
ໂປລແກລມທີ່ໃຫ້ຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບການຂຽນໂປຼແກຼມທີ່ປອດໄພ.

ເມື່ອທ່ານກໍານົດບັນຫາແລະເຂົ້າໃຈມັນ, ທ່ານສາມາດແກ້ໄຂມັນໄດ້. ບາງຄັ້ງທ່ານອາດຈະ
ຕ້ອງການທີ່ຈະເຮັດການວິເຄາະຄືນໃຫມ່, ທັງສອງເພາະວ່າຕົວເລກເສັ້ນຈະປ່ຽນແປງ ແລະ ເພື່ອ​ເຮັດ​ໃຫ້​ແນ່​ໃຈວ່​າ
ວ່າລະຫັດໃຫມ່ບໍ່ໄດ້ນໍາສະເຫນີຈຸດອ່ອນທີ່ແຕກຕ່າງກັນ.

ຖ້າທ່ານໄດ້ກໍານົດວ່າບາງສາຍບໍ່ແມ່ນບັນຫາແທ້ໆ, ແລະທ່ານແນ່ໃຈວ່າມັນ, ທ່ານສາມາດເຮັດໄດ້
ໃສ່ກ່ອນ ຫຼືໃນແຖວທີ່ກະທໍາຜິດໃນຄໍາຄິດຄໍາເຫັນ
/* Flawfinder: ບໍ່ສົນໃຈ */
ເພື່ອຮັກສາພວກມັນບໍ່ໃຫ້ສະແດງຢູ່ໃນຜົນຜະລິດ.

ເມື່ອ​ທ່ານ​ໄດ້​ເຮັດ​ແນວ​ນັ້ນ​, ທ່ານ​ຄວນ​ຈະ​ກັບ​ຄືນ​ໄປ​ບ່ອນ​ແລະ​ຄົ້ນ​ຫາ​ສໍາ​ລັບ​ການ​ປ້ອນ​ຂໍ້​ມູນ​ຂອງ​ໂຄງ​ການ​, ເພື່ອ​ເຮັດ​ໃຫ້​
ໃຫ້ແນ່ໃຈວ່າໂຄງການຈະກັ່ນຕອງການປ້ອນຂໍ້ມູນທີ່ບໍ່ເຊື່ອຖືໃດໆຂອງມັນຢ່າງແຂງແຮງ. Flawfinder ສາມາດເຮັດໄດ້
ລະບຸການປ້ອນຂໍ້ມູນຂອງໂປຣແກຣມຫຼາຍອັນໂດຍໃຊ້ຕົວເລືອກ --inputs, ເຊັ່ນນີ້:
flawfinder --ປ້ອນຂໍ້ມູນ xyzzy

Flawfinder ສາມາດປະສົມປະສານໄດ້ດີກັບຕົວແກ້ໄຂຂໍ້ຄວາມແລະສະພາບແວດລ້ອມການພັດທະນາປະສົມປະສານ;
ເບິ່ງຕົວຢ່າງສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.

Flawfinder ປະກອບມີທາງເລືອກອື່ນໆຈໍານວນຫຼາຍ, ລວມທັງອັນທີ່ຈະສ້າງສະບັບ HTML ຂອງ
ຜົນ​ຜະ​ລິດ (ທີ່​ເປັນ​ປະ​ໂຫຍດ​ສໍາ​ລັບ​ການ​ສະ​ແດງ​ທີ່​ສວຍ​ງາມ​)​. ພາກຕໍ່ໄປອະທິບາຍທາງເລືອກເຫຼົ່ານັ້ນໃນເພີ່ມເຕີມ
ລາຍລະອຽດ.

OPTIONS


Flawfinder ມີ​ຈໍາ​ນວນ​ຂອງ​ທາງ​ເລືອກ​, ຊຶ່ງ​ສາ​ມາດ​ໄດ້​ຮັບ​ການ​ຈັດ​ກຸ່ມ​ເປັນ​ທາງ​ເລືອກ​ທີ່​ຄວບ​ຄຸມ​ຂອງ​ຕົນ​ເອງ​
ເອ​ກະ​ສານ​, ເລືອກ​ເອົາ​ຂໍ້​ມູນ​ການ​ປ້ອນ​ຂໍ້​ມູນ​, ເລືອກ​ເອົາ hits ທີ່​ຈະ​ສະ​ແດງ​, ເລືອກ​ຮູບ​ແບບ​ຜົນ​ຜະ​ລິດ​,
ແລະປະຕິບັດການຄຸ້ມຄອງ hitlist. Flawfinder ສະຫນັບສະຫນູນ syntax ມາດຕະຖານທີ່ກໍານົດໄວ້ໃນ
POSIX (ສະບັບທີ 7, 2013 ສະບັບ) ພາກ ``ສົນທິສັນຍາກ່ຽວກັບຜົນປະໂຫຍດ''. ມັນຍັງສະຫນັບສະຫນູນ GNU
ທາງ​ເລືອກ​ຍາວ (ທາງ​ເລືອກ​ສອງ dash ຂອງ​ຮູບ​ແບບ --ທາງເລືອກ) ດັ່ງ​ທີ່​ກໍາ​ນົດ​ໄວ້​ໃນ​ GNU C ຫ້ອງສະຫມຸດ
ກະສານອ້າງອີງ ຄູ່ມື ``ສົນທິສັນຍາການໂຕ້ຖຽງຂອງໂປຣແກຣມ'' ແລະ GNU ລະຫັດ ມາດຕະຖານ
``ມາດຕະຖານສຳລັບການໂຕ້ຕອບແຖວຄຳສັ່ງ''. ການໂຕ້ຖຽງທາງເລືອກຍາວສາມາດໄດ້ຮັບການສະຫນອງໃຫ້ເປັນ
``--name=value'' ຫຼື ``-ຄ່າຊື່''. ບາງທາງເລືອກສາມາດເຂົ້າເຖິງໄດ້ໂດຍການໃຊ້ຫຼາຍເທົ່ານັ້ນ
ສົນທິສັນຍາທາງເລືອກຍາວ GNU ສາມາດອ່ານໄດ້; ທາງເລືອກທົ່ວໄປຍັງໄດ້ຮັບການສະຫນັບສະຫນູນຈາກຜູ້ສູງອາຍຸ
ສົນທິສັນຍາທາງເລືອກຕົວອັກສອນດຽວ.

ເອ​ກະ​ສານ
- ຊ່ວຍ

-h ສະແດງຂໍ້ມູນການນໍາໃຊ້ (ການຊ່ວຍເຫຼືອ).

- ການປ່ຽນແປງ ສະແດງໃຫ້ເຫັນ (ພຽງແຕ່) ຈໍານວນສະບັບແລະອອກ.

--ລາຍການ ບອກຂໍ້ກໍານົດ (ໂທເຄັນ) ທີ່ເຮັດໃຫ້ເກີດການກວດສອບຕື່ມອີກ, ຄວາມສ່ຽງເລີ່ມຕົ້ນຂອງພວກເຂົາ
ລະດັບ, ແລະການເຕືອນໄພເລີ່ມຕົ້ນ (ລວມທັງຕົວລະບຸ CWE), ຖ້າ
ນຳໃຊ້ໄດ້), ແຖບທັງໝົດແຍກກັນ. ເງື່ອນໄຂຕົ້ນຕໍແມ່ນຊື່ຂອງທ່າແຮງ -
ຫນ້າທີ່ອັນຕະລາຍ. ໃຫ້ສັງເກດວ່າລະດັບຄວາມສ່ຽງທີ່ຖືກລາຍງານແລະການເຕືອນໄພສໍາລັບບາງຄົນ
ລະຫັດສະເພາະອາດຈະແຕກຕ່າງຈາກຄ່າເລີ່ມຕົ້ນ, ຂຶ້ນກັບວ່າຄຳສັບເປັນແນວໃດ
ໃຊ້. ສົມທົບກັບ -D ຖ້າເຈົ້າບໍ່ຕ້ອງການ header ປົກກະຕິ. Flawfinder
ຮຸ່ນ 1.29 ປ່ຽນຕົວແຍກຈາກຍະຫວ່າງມາເປັນແຖບ, ແລະເພີ່ມຄ່າເລີ່ມຕົ້ນ
ພາກສະຫນາມເຕືອນ.

ການຄັດເລືອກ ການປ້ອນຂໍ້ມູນ ຂໍ້ມູນ
--allowlink ອະນຸຍາດໃຫ້ນໍາໃຊ້ການເຊື່ອມຕໍ່ສັນຍາລັກ; ປົກກະຕິແລ້ວການເຊື່ອມຕໍ່ສັນຍາລັກແມ່ນຂ້າມ. ຢ່າ
ໃຊ້ທາງເລືອກນີ້ຖ້າທ່ານກໍາລັງວິເຄາະລະຫັດໂດຍຜູ້ອື່ນ; ຜູ້ໂຈມຕີສາມາດເຮັດໄດ້ຫຼາຍຢ່າງ
ສິ່ງທີ່ເຮັດໃຫ້ເກີດບັນຫາສໍາລັບການວິເຄາະທີ່ມີທາງເລືອກນີ້ຖືກເປີດໃຊ້. ສໍາລັບ
ຕົວຢ່າງ, ຜູ້ໂຈມຕີສາມາດໃສ່ລິ້ງສັນຍາລັກໃສ່ໄຟລ໌ເຊັ່ນ / etc / passwd
(ຮົ່ວຂໍ້ມູນກ່ຽວກັບໄຟລ໌) ຫຼືສ້າງ loop ວົງ, ເຊິ່ງຈະ
ເຮັດໃຫ້ flawfinder ດໍາເນີນການ "ຕະຫຼອດໄປ". ບັນຫາອື່ນໃນການເປີດໃຊ້ງານນີ້
ທາງເລືອກແມ່ນວ່າຖ້າໄຟລ໌ດຽວກັນຖືກອ້າງອີງຫຼາຍຄັ້ງໂດຍໃຊ້ສັນຍາລັກ
ການເຊື່ອມຕໍ່, ມັນຈະຖືກວິເຄາະຫຼາຍຄັ້ງ (ແລະດັ່ງນັ້ນຈຶ່ງລາຍງານຫຼາຍຄັ້ງ).
ໃຫ້ສັງເກດວ່າ flawfinder ປະກອບມີການປົກປ້ອງການເຊື່ອມຕໍ່ສັນຍາລັກບາງຢ່າງແລ້ວ
ປະເພດໄຟລ໌ພິເສດເຊັ່ນ: ປະເພດໄຟລ໌ອຸປະກອນ (ເຊັ່ນ: /dev/zero ຫຼື
C:\mystuff\com1). ໃຫ້ສັງເກດວ່າສໍາລັບ flawfinder ຮຸ່ນ 1.01 ແລະກ່ອນ, ນີ້ແມ່ນ
ຄ່າເລີ່ມຕົ້ນ.

--followdotdir
ໃສ່ລາຍການທີ່ຊື່ເລີ່ມຕົ້ນດ້ວຍ ".". ຕາມປົກກະຕິໄດເລກະທໍລີດັ່ງກ່າວ
ບໍ່ສົນໃຈ, ເພາະວ່າປົກກະຕິແລ້ວພວກມັນປະກອບມີຂໍ້ມູນສ່ວນຕົວຂອງການຄວບຄຸມເວີຊັນ (ເຊັ່ນ:
.git/ ຫຼື .svn/), ການຕັ້ງຄ່າ, ແລະອື່ນໆ.

--nolink ບໍ່ສົນໃຈ. ປະຫວັດສາດນີ້ພິການດັ່ງຕໍ່ໄປນີ້ການເຊື່ອມຕໍ່ສັນຍາລັກ; ພຶດຕິກໍານີ້
ດຽວນີ້ແມ່ນຄ່າເລີ່ມຕົ້ນ.

--patch=patchfile

-P patchfile
ກວດເບິ່ງໄຟລ໌ຫຼືໄດເລກະທໍລີທີ່ເລືອກ, ແຕ່ວ່າພຽງແຕ່ລາຍງານ hits ໃນແຖວນັ້ນ
ໄດ້ຖືກເພີ່ມຫຼືດັດແກ້ໂດຍໄຟລ໌ patch ທີ່ໃຫ້. ໄຟລ໌ patch ຕ້ອງຢູ່ໃນ a
ຮັບຮູ້ຮູບແບບຄວາມແຕກຕ່າງທີ່ເປັນເອກະພາບ (ຕົວຢ່າງ, ຜົນຜະລິດຂອງ GNU "diff -u ເກົ່າໃຫມ່",
"svn diff", ຫຼື "git diff [commit]"). Flawfinder ສົມມຸດວ່າ patch ມີ
ຖືກນຳໃຊ້ກັບໄຟລ໌ແລ້ວ. ໄຟລ໌ patch ຍັງສາມາດປະກອບມີການປ່ຽນແປງ
ໄຟລ໌ທີ່ບໍ່ກ່ຽວຂ້ອງ (ພວກມັນພຽງແຕ່ຈະຖືກລະເລີຍ). ຕົວເລກແຖວທີ່ໃຫ້ຢູ່ໃນ
ໄຟລ໌ patch ຖືກນໍາໃຊ້ເພື່ອກໍານົດວ່າເສັ້ນໃດຖືກປ່ຽນແປງ, ດັ່ງນັ້ນຖ້າທ່ານມີ
ແກ້ໄຂໄຟລ໌ຕັ້ງແຕ່ໄຟລ໌ patch ຖືກສ້າງຂຶ້ນ, ຟື້ນຟູໄຟລ໌ patch
ທໍາອິດ. ຈົ່ງລະວັງວ່າຊື່ໄຟລ໌ຂອງໄຟລ໌ໃຫມ່ທີ່ໃຫ້ຢູ່ໃນໄຟລ໌ patch
ຕ້ອງກົງກັນຢ່າງແນ່ນອນ, ລວມທັງຕົວພິມໃຫຍ່/ນ້ອຍ, ຄໍານໍາໜ້າເສັ້ນທາງ ແລະລາຍການ
ຕົວແຍກ (\ vs. /). ຮອງຮັບສະເພາະຮູບແບບຄວາມແຕກຕ່າງທີ່ເປັນເອກະພາບເທົ່ານັ້ນ (GNU diff, svn
diff, ແລະ git diff ຜົນຜະລິດແມ່ນເຫມາະສົມ); ຖ້າທ່ານມີຮູບແບບທີ່ແຕກຕ່າງກັນ, ອີກເທື່ອຫນຶ່ງ
ຟື້ນຟູມັນກ່ອນ. ພຽງແຕ່ hits ທີ່ເກີດຂຶ້ນໃນສາຍການປ່ຽນແປງຜົນໄດ້ຮັບ, ຫຼື
ທັນທີຂ້າງເທິງແລະຂ້າງລຸ່ມນີ້ພວກເຂົາ, ໄດ້ຖືກລາຍງານ. ທາງເລືອກນີ້ຫມາຍເຖິງ
-- ບໍ່ເຄີຍລະເລີຍ.

ການຄັດເລືອກ Hits to ການສະແດງ
-- ວັດສະດຸປ້ອນ

-I ສະແດງພຽງແຕ່ຟັງຊັນທີ່ໄດ້ຮັບຂໍ້ມູນຈາກພາຍນອກໂຄງການ; ນີ້ຍັງກໍານົດ
ລະດັບຕໍ່າສຸດເຖິງ 0.

--minlevel=X

-m X ກໍານົດລະດັບຄວາມສ່ຽງຂັ້ນຕ່ໍາເປັນ X ສໍາລັບການລວມຢູ່ໃນ hitlist. ນີ້ສາມາດມາຈາກ 0 (``ບໍ່
ຄວາມສ່ຽງ'') ເຖິງ 5 (``ຄວາມສ່ຽງສູງສຸດ''); ຄ່າເລີ່ມຕົ້ນແມ່ນ 1.

--falsepositive

-F ຢ່າລວມເອົາ hits ທີ່ອາດຈະເປັນຜົນບວກທີ່ບໍ່ຖືກຕ້ອງ. ໃນປັດຈຸບັນ, ນີ້ຫມາຍຄວາມວ່າ
ຊື່ຟັງຊັນນັ້ນຖືກລະເລີຍຖ້າພວກເຂົາບໍ່ໄດ້ຕິດຕາມດ້ວຍ "(", ແລະນັ້ນ
ບໍ່ໄດ້ສັງເກດການປະກາດຂອງອາເຣຕົວອັກສອນ. ດັ່ງນັ້ນ, ຖ້າທ່ານໃຊ້ຕົວແປ
ຊື່ວ່າ "ການເຂົ້າເຖິງ" ຢູ່ທົ່ວທຸກແຫ່ງ, ນີ້ຈະລົບລ້າງການອ້າງອີງເຖິງການປະຊຸມສະໄຫມນີ້
ຕົວແປ. ນີ້ບໍ່ແມ່ນຄ່າເລີ່ມຕົ້ນ, ເພາະວ່າອັນນີ້ຍັງເພີ່ມຄວາມເປັນໄປໄດ້ຂອງ
ຂາດ hits ທີ່ສໍາຄັນ; ໂດຍສະເພາະ, ຊື່ຟັງຊັນໃນ #define clauses ແລະການໂທ
ຜ່ານຕົວຊີ້ຟັງຊັນຈະຖືກພາດ.

-- ບໍ່ເຄີຍລະເລີຍ

-n ບໍ່ເຄີຍບໍ່ສົນໃຈບັນຫາຄວາມປອດໄພ, ເຖິງແມ່ນວ່າພວກເຂົາມີຄໍາສັ່ງ "ບໍ່ສົນໃຈ" ໃນ a
ຄຳ ເຫັນ.

--regexp=PATTERN

-e PATTERN
ພຽງແຕ່ລາຍງານ hits ທີ່ມີຂໍ້ຄວາມທີ່ກົງກັບຮູບແບບການສະແດງອອກປົກກະຕິ PATTERN.
ຕົວຢ່າງ, ພຽງແຕ່ລາຍງານ hits ທີ່ມີຂໍ້ຄວາມ "CWE-120", ໃຊ້ ``--regex
CWE-120''. ຊື່ທຸງທາງເລືອກເຫຼົ່ານີ້ແມ່ນຄືກັນກັບ grep.

ການຄັດເລືອກ ຜົນຜະລິດ ຮູບແບບ
--ຖັນ

-C ສະແດງຈໍານວນຖັນ (ເຊັ່ນດຽວກັນກັບຊື່ໄຟລ໌ແລະເລກແຖວ) ຂອງແຕ່ລະ hit;
ອັນນີ້ແມ່ນສະແດງຫຼັງຈາກເລກແຖວໂດຍການເພີ່ມຈໍ້າສອງເມັດ ແລະຕົວເລກຖັນໃນ
ແຖວ (ຕົວອັກສອນທຳອິດໃນແຖວແມ່ນຖັນເລກ 1). ນີ້ແມ່ນເປັນປະໂຫຍດ
ສໍາລັບບັນນາທິການທີ່ສາມາດໂດດໄປຫາຄໍລໍາສະເພາະ, ຫຼືສໍາລັບການເຊື່ອມໂຍງກັບອື່ນໆ
ເຄື່ອງ​ມື (ເຊັ່ນ​ວ່າ​ເພື່ອ​ເພີ່ມ​ເຕີມ​ການ​ກັ່ນ​ຕອງ​ອອກ​ທາງ​ບວກ​ທີ່​ບໍ່​ຖືກ​ຕ້ອງ​)​.

--ສະພາບການ

-c ສະ​ແດງ​ໃຫ້​ເຫັນ​ສະ​ພາບ​ການ​, ເຊັ່ນ​, ເສັ້ນ​ທີ່​ມີ "ຕີ​" / ຂໍ້​ບົກ​ພ່ອງ​ທີ່​ອາດ​ມີ​. ໂດຍຄ່າເລີ່ມຕົ້ນ
ເສັ້ນສະແດງທັນທີຫຼັງຈາກການເຕືອນ.

--dataonly

-D ຢ່າສະແດງສ່ວນຫົວ ແລະສ່ວນທ້າຍ. ໃຊ້ນີ້ພ້ອມກັບ --quiet ເພື່ອເບິ່ງພຽງແຕ່
ຂໍ້ມູນຕົວມັນເອງ.

--html

-H ຈັດຮູບແບບຜົນຜະລິດເປັນ HTML ແທນທີ່ຈະເປັນຂໍ້ຄວາມງ່າຍໆ.

-- ທັນ​ທີ​ທັນ​ໃດ​

-i ທັນທີສະແດງ hits (ບໍ່ພຽງແຕ່ລໍຖ້າຈົນກ່ວາສິ້ນສຸດ).

--ສາຍດ່ຽວ

-S ສະແດງເປັນເສັ້ນດຽວຂອງຜົນຜະລິດຂໍ້ຄວາມສໍາລັບການຕີແຕ່ລະຄົນ. ເປັນປະໂຫຍດສໍາລັບການຕິດຕໍ່ພົວພັນ
ດ້ວຍເຄື່ອງມືການລວບລວມ.

--ເວລາຫວ່າງ ຍົກເລີກຂໍ້ມູນເວລາ. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການທົດສອບ regression ຂອງ flawfinder
ຕົວຂອງມັນເອງ, ດັ່ງນັ້ນຜົນຜະລິດບໍ່ແຕກຕ່າງກັນຂຶ້ນຢູ່ກັບການວິເຄາະດົນປານໃດ
ໃຊ້ເວລາ.

--ງຽບ

-Q ຢ່າສະແດງຂໍ້ມູນສະຖານະ (ເຊັ່ນວ່າໄຟລ໌ໃດກໍາລັງຖືກກວດສອບ) ໃນຂະນະທີ່
ການວິເຄາະແມ່ນດໍາເນີນຕໍ່ໄປ.

ລາຍຊື່ຮິດ ການຈັດການ
--savehitlist=F
ບັນ​ທຶກ hits ຜົນ​ໄດ້​ຮັບ​ທັງ​ຫມົດ (" hitlist ") ກັບ F.

--loadhitlist=F
ໂຫລດ hitlist ຈາກ F ແທນການວິເຄາະໂປຼແກຼມແຫຼ່ງ. ຄໍາເຕືອນ: ເຮັດ ບໍ່
ໂຫລດ hitlists ຈາກແຫຼ່ງທີ່ບໍ່ຫນ້າເຊື່ອຖື (ສໍາລັບເຫດຜົນດ້ານຄວາມປອດໄພ).

--diffhitlist=F
ສະ​ແດງ​ໃຫ້​ເຫັນ​ພຽງ​ແຕ່ hits (ໂຫຼດ​ຫຼື​ວິ​ເຄາະ​) ບໍ່​ໄດ້​ຢູ່​ໃນ F. F ໄດ້​ຖືກ​ສ້າງ​ຕັ້ງ​ສັນ​ນິ​ຖານ​ວ່າ​
ກ່ອນຫນ້ານີ້ການນໍາໃຊ້ --savehitlist. ຄໍາເຕືອນ: ເຮັດ ບໍ່ ບັນຊີລາຍຊື່ hits ທີ່ແຕກຕ່າງກັນຈາກ untrusted
ແຫຼ່ງຂໍ້ມູນ (ສໍາລັບເຫດຜົນດ້ານຄວາມປອດໄພ). ຖ້າຕົວເລືອກ --loadhitlist ບໍ່ໄດ້ຖືກສະໜອງໃຫ້,
ນີ້ຈະສະແດງການຕີໃນໄຟລ໌ລະຫັດແຫຼ່ງການວິເຄາະທີ່ບໍ່ໄດ້
ເກັບໄວ້ໃນ F. ຖ້າໃຊ້ພ້ອມກັບ --loadhitlist, ນີ້ຈະສະແດງ
hits ໃນ hitlist ໂຫຼດບໍ່ໄດ້ຢູ່ໃນ F. ຂັ້ນຕອນວິທີທີ່ແຕກຕ່າງກັນແມ່ນ
ອະນຸລັກ; hits ແມ່ນພິຈາລະນາພຽງແຕ່ '`ດຽວກັນ' ຖ້າພວກເຂົາມີຄືກັນ
ຊື່ໄຟລ໌, ໝາຍເລກແຖວ, ຕຳແໜ່ງຖັນ, ຊື່ຟັງຊັນ, ແລະລະດັບຄວາມສ່ຽງ.

ຕົວຢ່າງ


ນີ້ແມ່ນຕົວຢ່າງຕ່າງໆຂອງວິທີການເອີ້ນ flawfinder. ຕົວຢ່າງທໍາອິດສະແດງໃຫ້ເຫັນຫຼາຍຢ່າງ
ຕົວເລືອກເສັ້ນຄໍາສັ່ງງ່າຍດາຍ. Flawfinder ຖືກອອກແບບມາເພື່ອເຮັດວຽກໄດ້ດີກັບຕົວແກ້ໄຂຂໍ້ຄວາມແລະ
ສະພາບແວດລ້ອມການພັດທະນາປະສົມປະສານ, ດັ່ງນັ້ນພາກຕໍ່ໄປສະແດງໃຫ້ເຫັນວິທີການປະສົມປະສານ flawfinder
ເຂົ້າໄປໃນ vim ແລະ emacs.

ງ່າຍດາຍ ເສັ້ນຄໍາສັ່ງ ທາງເລືອກໃນການ
flawfinder /usr/src/linux-3.16
ກວດເບິ່ງໄຟລ໌ C/C++ ທັງໝົດໃນໄດເລກະທໍລີ /usr/src/linux-3.16 ແລະທັງໝົດຂອງມັນ.
subdirectories (recursively), ລາຍງານກ່ຽວກັບ hits ທັງຫມົດທີ່ພົບເຫັນ. ໂດຍຄ່າເລີ່ມຕົ້ນ
flawfinder ຈະຂ້າມການເຊື່ອມຕໍ່ສັນຍາລັກແລະໄດເລກະທໍລີທີ່ມີຊື່ທີ່ເລີ່ມຕົ້ນດ້ວຍ
ໄລຍະເວລາ.

flawfinder --minlevel=4 .
ກວດເບິ່ງໄຟລ໌ C/C++ ທັງໝົດໃນໄດເລກະທໍລີປະຈຸບັນ ແລະໄດເລກະທໍລີຍ່ອຍຂອງມັນ
(recursively); ພຽງແຕ່ລາຍງານຄວາມອ່ອນແອໃນລະດັບ 4 ຂຶ້ນໄປ (ສອງອັນສູງສຸດ
ລະດັບຄວາມສ່ຽງ).

flawfinder -- ວັດສະດຸປ້ອນ mydir
ກວດເບິ່ງໄຟລ໌ C/C ++ ທັງໝົດໃນ mydir ແລະ ໄດເລກະທໍລີຍ່ອຍຂອງມັນ (ຊ້ຳຄືນ), ແລະ
ບົດ​ລາຍ​ງານ​ການ​ທໍາ​ງານ​ທີ່​ເອົາ​ການ​ປ້ອນ​ຂໍ້​ມູນ (ສະ​ນັ້ນ​ທ່ານ​ສາ​ມາດ​ຮັບ​ປະ​ກັນ​ວ່າ​ພວກ​ເຂົາ​ເຈົ້າ​ກັ່ນ​ຕອງ​
ວັດສະດຸປ້ອນຢ່າງເໝາະສົມ).

flawfinder -- ບໍ່ເຄີຍລະເລີຍ mydir
ກວດເບິ່ງໄຟລ໌ C/C++ ທັງໝົດໃນໄດເລກະທໍລີ mydir ແລະໄດເລກະທໍລີຍ່ອຍຂອງມັນ,
ລວມທັງເຖິງແມ່ນ hits ທີ່ຫມາຍສໍາລັບການບໍ່ສົນໃຈໃນຄໍາເຫັນລະຫັດ.

flawfinder -QD mydir
ກວດເບິ່ງ mydir ແລະລາຍງານພຽງແຕ່ຜົນໄດ້ຮັບຕົວຈິງ (ການຖອນຫົວແລະ
ສ່ວນທ້າຍຂອງຜົນຜະລິດ). ແບບຟອມນີ້ແມ່ນເປັນປະໂຫຍດຖ້າຜົນຜະລິດຈະຖືກທໍ່ເຂົ້າໄປໃນ
ເຄື່ອງມືອື່ນໆສໍາລັບການວິເຄາະຕື່ມອີກ. The -C (--columns) ແລະ -S (--singleline)
ທາງເລືອກຍັງສາມາດເປັນປະໂຫຍດຖ້າຫາກວ່າທ່ານກໍາລັງ piping ຂໍ້ມູນເຂົ້າໄປໃນເຄື່ອງມືອື່ນໆ.

flawfinder -QDSC mydir
ກວດເບິ່ງ mydir, ລາຍງານພຽງແຕ່ຜົນໄດ້ຮັບຕົວຈິງ (ບໍ່ມີ header ຫຼື footer). ແຕ່ລະ
hit ແມ່ນລາຍງານຢູ່ໃນແຖວຫນຶ່ງ, ແລະຕົວເລກຖັນໄດ້ຖືກລາຍງານ. ນີ້ສາມາດເປັນ
ຄໍາສັ່ງທີ່ເປັນປະໂຫຍດຖ້າຫາກວ່າທ່ານກໍາລັງໃຫ້ຜົນຜະລິດ flawfinder ກັບເຄື່ອງມືອື່ນໆ.

flawfinder --ງຽບ --html --ສະພາບການ mydir > results.html
ກວດເບິ່ງໄຟລ໌ C/C++ ທັງໝົດໃນໄດເຣັກທໍຣີ mydir ແລະໄດເຣັກທໍຣີຍ່ອຍຂອງມັນ, ແລະ
ຜະລິດຮູບແບບ HTML ຂອງຜົນໄດ້ຮັບ. ການຄຸ້ມຄອງລະຫັດແຫຼ່ງ
ລະບົບ (ເຊັ່ນ: SourceForge ແລະ Savannah) ອາດຈະໃຊ້ຄໍາສັ່ງເຊັ່ນນີ້.

flawfinder --ງຽບ --savehitlist saved.hits *.[ch]
ກວດເບິ່ງໄຟລ໌ .c ແລະ .h ທັງໝົດໃນໄດເລກະທໍລີປະຈຸບັນ. ບໍ່ລາຍງານກ່ຽວກັບ
ສະ​ຖາ​ນະ​ພາບ​ຂອງ​ການ​ປຸງ​ແຕ່ງ​, ແລະ​ບັນ​ທຶກ hitlist ຜົນ​ໄດ້​ຮັບ (ຊຸດ​ຂອງ hits ທັງ​ຫມົດ​) ໃນ​
ໄຟລ໌ saved.hits.

flawfinder -- ບັນຊີລາຍຊື່ທີ່ຫຍຸ້ງຍາກ saved.hits *.[ch]
ກວດເບິ່ງໄຟລ໌ .c ແລະ .h ທັງໝົດໃນໄດເລກະທໍລີປະຈຸບັນ, ແລະສະແດງຜົນທີ່ໂດດເດັ່ນ
ບໍ່ໄດ້ຢູ່ໃນໄຟລ໌ saved.hits ແລ້ວ. ນີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອສະແດງໃຫ້ເຫັນພຽງແຕ່
ຊ່ອງໂຫວ່ ``ໃໝ່'' ໃນໂປຣແກມດັດແກ້, ຖ້າ saved.hits ຖືກສ້າງຂື້ນມາຈາກ
ຮຸ່ນເກົ່າຂອງໂຄງການທີ່ຖືກວິເຄາະ.

flawfinder --patch recent.patch .
ກວດເບິ່ງໄດເລກະທໍລີປະຈຸບັນ recursively, ແຕ່ພຽງແຕ່ລາຍງານສາຍທີ່ເປັນ
ປ່ຽນແປງ ຫຼືເພີ່ມໃນ patchfile ທີ່ນຳໃຊ້ແລ້ວຊື່ recent.patch.

flawfinder --regex "CWE-120|CWE-126" src /
ກວດ​ສອບ​ລະ​ບົບ​ src recursively, ແຕ່ພຽງແຕ່ລາຍງານ hits ບ່ອນທີ່ CWE-120 ຫຼື
ນຳໃຊ້ CWE-126.

ການຂໍ ຈາກ vim
ບັນນາທິການຂໍ້ຄວາມ vim ປະກອບມີກົນໄກ "ແກ້ໄຂດ່ວນ" ທີ່ເຮັດວຽກໄດ້ດີກັບ flawfinder, ດັ່ງນັ້ນ
ທີ່ທ່ານສາມາດເບິ່ງຂໍ້ຄວາມເຕືອນໄດ້ງ່າຍແລະໂດດໄປຫາລະຫັດແຫຼ່ງທີ່ກ່ຽວຂ້ອງ.

ຫນ້າທໍາອິດ, ທ່ານຈໍາເປັນຕ້ອງໄດ້ຮຽກຮ້ອງໃຫ້ flawfinder ເພື່ອສ້າງບັນຊີລາຍຊື່ຂອງ hits, ແລະມີສອງວິທີທີ່ຈະ
ເຮັດອັນນີ້. ວິທີທໍາອິດແມ່ນເພື່ອເລີ່ມຕົ້ນ flawfinder ທໍາອິດ, ແລະຫຼັງຈາກນັ້ນ (ການນໍາໃຊ້ຜົນຜະລິດຂອງມັນ) invoke
ຍ້ອນ. ວິທີທີສອງແມ່ນເພື່ອເລີ່ມຕົ້ນ (ຫຼືສືບຕໍ່ດໍາເນີນການ) vim, ແລະຫຼັງຈາກນັ້ນຮຽກຮ້ອງໃຫ້ flawfinder
(ໂດຍປົກກະຕິຈາກພາຍໃນ vim).

ສໍາລັບວິທີທໍາອິດ, ດໍາເນີນການ flawfinder ແລະເກັບຮັກສາຜົນຜະລິດຂອງມັນຢູ່ໃນບາງ FLAWFILE (ເວົ້າວ່າ "flawfile"),
ຫຼັງຈາກນັ້ນ, ເອີ້ນ vim ໂດຍໃຊ້ຕົວເລືອກ -q ຂອງມັນ, ເຊັ່ນນີ້: "vim -q flawfile". ວິທີທີສອງ
(ເລີ່ມ flawfinder ຫຼັງຈາກເລີ່ມຕົ້ນ vim) ສາມາດເຮັດໄດ້ legion ຂອງວິທີການ. ຫນຶ່ງ​ແມ່ນ​ການ​ຮຽກ​ຮ້ອງ​
flawfinder ໂດຍໃຊ້ຄຳສັ່ງ shell, ":!flawfinder-command > FLAWFILE", ຈາກນັ້ນປະຕິບັດຕາມນັ້ນດ້ວຍ.
ຄໍາສັ່ງ ":cf FLAWFILE". ອີກວິທີຫນຶ່ງແມ່ນການເກັບຮັກສາຄໍາສັ່ງ flawfinder ຢູ່ໃນຂອງທ່ານ
makefile (ເປັນ, ເວົ້າ, pseudocommand ຄື "ຂໍ້ບົກພ່ອງ"), ແລະຫຼັງຈາກນັ້ນດໍາເນີນການ ":make ເມີດວິໄນ".

ໃນກໍລະນີເຫຼົ່ານີ້, ທ່ານຕ້ອງການຄໍາສັ່ງສໍາລັບ flawfinder ເພື່ອດໍາເນີນການ. ຄໍາ​ສັ່ງ​ທີ່​ເຊື່ອ​ຖື​ໄດ້​, ທີ່​
ວາງແຕ່ລະຕີໃນແຖວຂອງຕົນເອງ (-S) ແລະເອົາສ່ວນຫົວ ແລະສ່ວນທ້າຍທີ່ສັບສົນອອກ
ມັນ​ແມ່ນ:

flawfinder -SQD .

ໃນປັດຈຸບັນທ່ານສາມາດນໍາໃຊ້ຄໍາສັ່ງການແກ້ໄຂຕ່າງໆເພື່ອເບິ່ງຜົນໄດ້ຮັບ. ຄໍາສັ່ງ ":cn" ສະແດງ
hit ຕໍ່ໄປ; ":cN" ສະແດງການຕີກ່ອນໜ້າ, ແລະ ":cr" ກັບຄືນໄປຫາການຕີຄັ້ງທຳອິດ.
":copen" ຈະເປີດປ່ອງຢ້ຽມເພື່ອສະແດງລາຍການ hits ໃນປັດຈຸບັນ, ເອີ້ນວ່າ "quickfix
window"; ":cclose" ຈະປິດໜ້າຕ່າງ Quickfix. ຖ້າ buffer ຢູ່ໃນປ່ອງຢ້ຽມທີ່ໃຊ້ແລ້ວມີ
ມີການປ່ຽນແປງ, ແລະຄວາມຜິດພາດແມ່ນຢູ່ໃນໄຟລ໌ອື່ນ, ໂດດໄປຫາຄວາມຜິດພາດຈະລົ້ມເຫລວ. ເຈົ້າ​ຕ້ອງ
ໃຫ້ແນ່ໃຈວ່າປ່ອງຢ້ຽມມີ buffer ທີ່ສາມາດຖືກປະຖິ້ມໄວ້ກ່ອນທີ່ຈະພະຍາຍາມຂ້າມໄປຫາ a
ໄຟລ໌ໃຫມ່, ເວົ້າໂດຍການປະຫຍັດໄຟລ໌; ນີ້ປ້ອງກັນການສູນເສຍຂໍ້ມູນໂດຍບັງເອີນ.

ການຂໍ ຈາກ emacs
ຕົວແກ້ໄຂຂໍ້ຄວາມ / ລະບົບປະຕິບັດການ emacs ປະກອບມີ "ໂຫມດ grep" ແລະ "ໂຫມດລວບລວມ"
ກົນໄກທີ່ເຮັດວຽກໄດ້ດີກັບ flawfinder, ເຮັດໃຫ້ມັນງ່າຍທີ່ຈະເບິ່ງຂໍ້ຄວາມເຕືອນ, ເຕັ້ນໄປຫາ
ກັບລະຫັດແຫຼ່ງທີ່ກ່ຽວຂ້ອງ, ແລະແກ້ໄຂບັນຫາໃດໆທີ່ທ່ານພົບ.

ກ່ອນອື່ນ ໝົດ, ທ່ານ ຈຳ ເປັນຕ້ອງເອີ້ນຂໍ້ບົກພ່ອງເພື່ອສ້າງບັນຊີລາຍຊື່ຂອງຂໍ້ຄວາມເຕືອນ. ທ່ານສາມາດນໍາໃຊ້
"ໂໝດ grep" ຫຼື "ຮູບແບບການລວບລວມ" ເພື່ອສ້າງລາຍຊື່ນີ້. ເລື້ອຍໆ "grep mode" ແມ່ນສະດວກກວ່າ;
ມັນປ່ອຍໃຫ້ຮູບແບບການລວບລວມບໍ່ຖືກແຕະຕ້ອງເພື່ອໃຫ້ທ່ານສາມາດລວບລວມຄືນໄດ້ຢ່າງງ່າຍດາຍເມື່ອທ່ານມີການປ່ຽນແປງ
ບາງສິ່ງບາງຢ່າງ. ຢ່າງໃດກໍຕາມ, ຖ້າທ່ານຕ້ອງການທີ່ຈະໂດດໄປຫາຕໍາແຫນ່ງຖັນທີ່ແນ່ນອນຂອງ hit, ລວບລວມ
ໂຫມດອາດຈະສະດວກກວ່າເພາະວ່າ emacs ສາມາດໃຊ້ຄໍລໍາ output ຂອງ flawfinder ກັບ
ເຕັ້ນໄປຫາສະຖານທີ່ທີ່ຖືກຕ້ອງໂດຍກົງໂດຍບໍ່ມີການຕັ້ງຄ່າພິເສດໃດໆ.

ເພື່ອໃຊ້ໂຫມດ grep, ໃສ່ຄໍາສັ່ງ "Mx grep" ແລະຫຼັງຈາກນັ້ນເຂົ້າໄປໃນ flawfinder ທີ່ຈໍາເປັນ
ຄໍາສັ່ງ. ເພື່ອໃຊ້ໂຫມດການລວບລວມ, ໃສ່ຄໍາສັ່ງ "Mx compile" ແລະໃສ່ທີ່ຕ້ອງການ
ຄໍາສັ່ງ flawfinder. ນີ້ແມ່ນຄໍາສັ່ງ meta-key, ດັ່ງນັ້ນທ່ານຈະຕ້ອງໃຊ້ meta key ສໍາລັບ
ແປ້ນ​ພິມ​ຂອງ​ທ່ານ (ປົກ​ກະ​ຕິ​ແລ້ວ​ນີ້​ແມ່ນ​ກະ​ແຈ ESC​)​. ເຊັ່ນດຽວກັນກັບຄໍາສັ່ງ emacs ທັງຫມົດ, ທ່ານຈະຕ້ອງ
ກົດ RETURN ຫຼັງຈາກພິມ "grep" ຫຼື "compile". ດັ່ງນັ້ນໃນຫຼາຍລະບົບ, ຮູບແບບ grep ແມ່ນ
ຖືກເອີ້ນໂດຍການພິມ ESC xgrep RETURN.

ຫຼັງຈາກນັ້ນ, ທ່ານຈໍາເປັນຕ້ອງໃສ່ຄໍາສັ່ງ, ຖອນສິ່ງທີ່ມີຢູ່ກ່ອນຖ້າຈໍາເປັນ. ກ
ຄໍາ​ສັ່ງ​ທີ່​ເຊື່ອ​ຖື​ໄດ້​ແມ່ນ​:

flawfinder -SQDC .

ຄໍາ​ສັ່ງ​ນີ້​ເຮັດ​ໃຫ້​ທຸກ​ການ​ລາຍ​ງານ​ການ​ຕີ​ເປັນ​ເສັ້ນ​ດຽວ​, ເຊິ່ງ​ແມ່ນ​ງ່າຍ​ຂຶ້ນ​ຫຼາຍ​ສໍາ​ລັບ​ເຄື່ອງ​ມື​ທີ່​ຈະ​
ຈັບ. ທາງເລືອກທີ່ງຽບແລະ dataonly ເອົາຂໍ້ມູນສະຖານະພາບອື່ນໆທີ່ບໍ່ຈໍາເປັນສໍາລັບ
ໃຊ້ພາຍໃນ emacs. ໄລຍະເວລາ trailing ຫມາຍຄວາມວ່າໄດເລກະທໍລີປະຈຸບັນແລະທັງຫມົດ
descendents ຖືກຄົ້ນຫາສໍາລັບລະຫັດ C / C ++, ແລະວິເຄາະຂໍ້ບົກພ່ອງ.

ເມື່ອທ່ານໄດ້ຮຽກຮ້ອງໃຫ້ flawfinder, ທ່ານສາມາດໃຊ້ emacs ເພື່ອເຕັ້ນໄປຫາຜົນໄດ້ຮັບຂອງມັນ. ໄດ້
ຄໍາສັ່ງ Cx ` (Control-x backtick) ໄປຢ້ຽມຢາມສະຖານທີ່ລະຫັດແຫຼ່ງສໍາລັບການເຕືອນຕໍ່ໄປ
ຂໍ້ຄວາມ. Cu Cx ` (control-u control-x backtick) restarts ຈາກຈຸດເລີ່ມຕົ້ນ. ເຈົ້າ​ສາ​ມາດ
ໄປຢ້ຽມຢາມແຫຼ່ງສໍາລັບຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດໂດຍສະເພາະໂດຍການເຄື່ອນຍ້າຍໄປຫາຂໍ້ຄວາມທີ່ຖືກຕີຢູ່ໃນ
*compilation* buffer ຫຼື *grep* buffer ແລະພິມລະຫັດກັບຄືນ. (ຫມາຍເຫດທາງວິຊາການ: ໃນ
compilation buffer, ນີ້ຮຽກວ່າ compile-goto-error.) ທ່ານຍັງສາມາດຄລິກໃສ່ Mouse-2.
ປຸ່ມໃນຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດ (ທ່ານບໍ່ຈໍາເປັນຕ້ອງປ່ຽນເປັນ * ການລວບລວມ * buffer ທໍາອິດ).

ຖ້າທ່ານຕ້ອງການໃຊ້ໂຫມດ grep ເພື່ອເຕັ້ນໄປຫາຄໍລໍາສະເພາະຂອງການຕີ, ທ່ານຈະຕ້ອງ
ພິເສດແມ່ນ configure emacs ເພື່ອເຮັດສິ່ງນີ້. ເພື່ອເຮັດສິ່ງນີ້, ແກ້ໄຂຕົວແປ emacs "grep-regexp-
alist" ຕົວແປນີ້ບອກ Emacs ວິທີການແຍກຜົນອອກຂອງຄໍາສັ່ງ "grep", ຄ້າຍຄືກັບຄໍາສັ່ງ.
ຕົວແປ "compilation-error-regexp-alist" ເຊິ່ງລາຍຊື່ຮູບແບບຕ່າງໆຂອງຄວາມຜິດພາດການລວບລວມ
ຂໍ້ຄວາມ.

ການຂໍ ຈາກ ປະສົມປະສານ ການພັດທະນາ ສະພາບແວດລ້ອມ (IDEs)
ສຳລັບ IDEs (ອື່ນໆ), ໃຫ້ປຶກສາກັບຊຸດ plug-in ຂອງ IDE ຂອງທ່ານ.

COMMON ອ່ອນເພຍ ENUMERATION (CWE)


ການຄິດໄລ່ຄວາມອ່ອນແອທົ່ວໄປ (CWE) ແມ່ນ `` ບັນຊີລາຍຊື່ຢ່າງເປັນທາງການຫຼືວັດຈະນານຸກົມຂອງຊອບແວທົ່ວໄປ
ຈຸດອ່ອນທີ່ສາມາດເກີດຂື້ນໃນສະຖາປັດຕະຍະກໍາຂອງຊອບແວ, ການອອກແບບ, ລະຫັດຫຼືການປະຕິບັດທີ່
ສາມາດນໍາໄປສູ່ຊ່ອງໂຫວ່ດ້ານຄວາມປອດໄພທີ່ຖືກຂູດຮີດ... ສ້າງຂຶ້ນເພື່ອຮັບໃຊ້ເປັນພາສາທົ່ວໄປ
ສໍາລັບການອະທິບາຍຈຸດອ່ອນດ້ານຄວາມປອດໄພຂອງຊອບແວ'' (http://cwe.mitre.org/about/faq.html) ສໍາລັບ
ຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບ CWEs, ເບິ່ງ http://cwe.mitre.org.

Flawfinder ສະຫນັບສະຫນູນ CWE ແລະເປັນ CWE-Compatible ຢ່າງເປັນທາງການ. ຕີຄໍາອະທິບາຍໂດຍປົກກະຕິ
ປະກອບມີຕົວລະບຸການນັບຄວາມອ່ອນແອທົ່ວໄປ (CWE) ທີ່ກ່ຽວຂ້ອງໃນວົງເລັບບ່ອນທີ່ມີ
ເປັນທີ່ຮູ້ຈັກວ່າເປັນ CWE ທີ່ກ່ຽວຂ້ອງ. ຕົວຢ່າງ, ຫຼາຍໆ hits ທີ່ກ່ຽວຂ້ອງກັບ buffer ກ່າວເຖິງ
CWE-120, ຕົວລະບຸ CWE ສໍາລັບ ``buffer copy ໂດຍບໍ່ມີການກວດສອບຂະຫນາດຂອງ input'' (aka
``Classic Buffer Overflow''). ໃນບາງກໍລະນີ, ຫຼາຍກວ່າໜຶ່ງຕົວລະບຸ CWE ອາດຈະຖືກລະບຸໄວ້.
ບົດລາຍງານ HTML ຍັງປະກອບມີການເຊື່ອມຕໍ່ hypertext ກັບຄໍານິຍາມ CWE ທີ່ໂຮດຢູ່ MITRE. ໃນ
ວິທີນີ້, flawfinder ຖືກອອກແບບມາເພື່ອຕອບສະຫນອງຄວາມຕ້ອງການ CWE-Output.

CWEs ຈໍານວນຫຼາຍທີ່ລາຍງານໂດຍ flawfinder ແມ່ນຖືກກໍານົດຢູ່ໃນ CWE / SANS ບັນຊີລາຍຊື່ເທິງ 25 ປີ 2011
(http://cwe.mitre.org/top25/). ປະຊາຊົນຈໍານວນຫຼາຍຈະຕ້ອງການທີ່ຈະຊອກຫາ CWEs ໃນບັນຊີລາຍຊື່ນີ້,
ເຊັ່ນ CWE-120 (ຄລາສສິກ buffer overflow), ເມື່ອ flawfinder ແຜນທີ່ໄປຫາ CWE ທີ່ຫຼາຍ.
ໂດຍ​ທົ່ວ​ໄປ​ກ​່​ວາ 25 ລາຍ​ການ​ອັນ​ດັບ​ຕົ້ນ​, ມັນ​ບັນ​ຊີ​ລາຍ​ການ​ມັນ​ເປັນ​ທົ່ວ​ໄປ​: ສະ​ເພາະ​ຫຼາຍ (ເຊັ່ນ​:
CWE-119:CWE-120), ເຊິ່ງໂດຍທົ່ວໄປແມ່ນການສ້າງແຜນທີ່ຕົວຈິງ. ຖ້າ flawfinder ແຜນທີ່ໄປຕື່ມອີກ
ລາຍການ CWE ສະເພາະທີ່ເປັນກໍລະນີສະເພາະຂອງ 25 ລາຍການ, ມັນຖືກລະບຸໄວ້ໃນແບບຟອມ
top-25/ຫຼາຍສະເພາະ (ຕົວຢ່າງ, CWE-362/CWE-367), ບ່ອນທີ່ແຜນທີ່ທີ່ແທ້ຈິງແມ່ນສະເພາະຫຼາຍ.
CWE ເຂົ້າ. ຖ້າແຜນທີ່ເຂົ້າດຽວກັນໄປຫາ CWE ຫຼາຍອັນ, CWEs ຖືກແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ
(ນີ້ມັກຈະເກີດຂຶ້ນກັບ CWE-20, ການກວດສອບການປ້ອນຂໍ້ມູນທີ່ບໍ່ຖືກຕ້ອງ). ນີ້ເຮັດໃຫ້ການຊອກຫາງ່າຍຂຶ້ນ
CWEs ທີ່ແນ່ນອນ.

CWE ເວີຊັ່ນ 2.7 (ປ່ອຍອອກມາເມື່ອ 23 ມິຖຸນາ 2014) ຖືກໃຊ້ເພື່ອເຮັດແຜນທີ່. CWE ໃນປັດຈຸບັນ
ແຜນທີ່ເລືອກ CWE ສະເພາະທີ່ສຸດທີ່ເຄື່ອງມືສາມາດກໍານົດ. ໃນທາງທິດສະດີ, CWE ສ່ວນໃຫຍ່
ອົງປະກອບຄວາມປອດໄພ (ລາຍເຊັນ/ຮູບແບບທີ່ເຄື່ອງມືຄົ້ນຫາ) ສາມາດເປັນທາງທິດສະດີໄດ້
ແຜນທີ່ເປັນ CWE-676 (ການນໍາໃຊ້ຫນ້າທີ່ອັນຕະລາຍທີ່ເປັນໄປໄດ້), ແຕ່ວ່າການສ້າງແຜນທີ່ດັ່ງກ່າວຈະບໍ່ເປັນ.
ເປັນປະໂຫຍດ. ດັ່ງນັ້ນ, ການສ້າງແຜນທີ່ສະເພາະຫຼາຍແມ່ນຕ້ອງການບ່ອນທີ່ສາມາດພົບເຫັນໄດ້. Flawfinder
ເປັນເຄື່ອງມືການວິເຄາະ lexical; ດັ່ງນັ້ນ, ມັນເປັນໄປບໍ່ໄດ້ທີ່ຈະເຮັດໃຫ້ມັນສະເພາະຫຼາຍກ່ວາ
ແຜນທີ່ປະຕິບັດໃນປັດຈຸບັນ. ນີ້ຍັງຫມາຍຄວາມວ່າມັນບໍ່ຫນ້າຈະຕ້ອງການຫຼາຍ
ການປັບປຸງສໍາລັບສະກຸນເງິນແຜນທີ່; ມັນພຽງແຕ່ບໍ່ມີຂໍ້ມູນພຽງພໍເພື່ອປັບປ່ຽນເປັນ
ລະດັບ CWE ລະອຽດທີ່ການປ່ຽນແປງ CWE ໂດຍທົ່ວໄປຈະມີຜົນກະທົບ. ລາຍຊື່ຕົວລະບຸ CWE
ໄດ້ຖືກສ້າງຂື້ນໂດຍອັດຕະໂນມັດໂດຍໃຊ້ "make show-cwes", ດັ່ງນັ້ນມີຄວາມຫມັ້ນໃຈວ່າບັນຊີລາຍຊື່ນີ້
ແມ່ນຖືກຕ້ອງ. ກະ​ລຸ​ນາ​ລາຍ​ງານ​ບັນ​ຫາ​ການ​ສ້າງ​ແຜນ​ທີ່ CWE ເປັນ​ແມງ​ໄມ້​ຖ້າ​ຫາກ​ວ່າ​ທ່ານ​ພົບ​ເຫັນ​ໃດໆ​.

Flawfinder ອາດຈະບໍ່ຊອກຫາຊ່ອງຫວ່າງ, ເຖິງແມ່ນວ່າ flawfinder ກວມເອົາຫນຶ່ງໃນ CWE ເຫຼົ່ານີ້
ຈຸດອ່ອນ. ທີ່ເວົ້າວ່າ, flawfinder ຊອກຫາຈຸດອ່ອນທີ່ລະບຸໄວ້ໂດຍ CWEs ມັນກວມເອົາ,
ແລະມັນຈະບໍ່ລາຍງານສາຍໂດຍບໍ່ມີຈຸດອ່ອນເຫຼົ່ານັ້ນໃນຫຼາຍໆກໍລະນີ. ດັ່ງນັ້ນ, ເປັນ
ຕ້ອງການສໍາລັບເຄື່ອງມືໃດໆທີ່ຕັ້ງໃຈຈະເຂົ້າກັນໄດ້ CWE, flawfinder ມີອັດຕາການຜິດ
ບວກໜ້ອຍກວ່າ 100% ແລະອັດຕາຜົນລົບທີ່ບໍ່ຖືກຕ້ອງໜ້ອຍກວ່າ 100%. Flawfinder ເກືອບ
ລາຍງານສະເໝີທຸກຄັ້ງທີ່ມັນພົບກົງກັບອົງປະກອບຄວາມປອດໄພ CWE (ລາຍເຊັນ/ຮູບແບບເປັນ
ກໍານົດໄວ້ໃນຖານຂໍ້ມູນຂອງມັນ), ເຖິງແມ່ນວ່າການກໍ່ສ້າງທີ່ບໍ່ຊັດເຈນບາງຢ່າງສາມາດເຮັດໃຫ້ມັນລົ້ມເຫລວ (ເບິ່ງ BUGS
ດ້ານລຸ່ມ).

Flawfinder ສາມາດລາຍງານກ່ຽວກັບ CWE ຕໍ່ໄປນີ້ (ເຫຼົ່ານີ້ແມ່ນ CWEs ທີ່ flawfinder ກວມເອົາ;
``*'' ໝາຍເຖິງຜູ້ທີ່ຢູ່ໃນ CWE/SANS ອັນດັບ 25 ລາຍຊື່):

· CWE-20: ການກວດສອບການປ້ອນຂໍ້ມູນບໍ່ຖືກຕ້ອງ

· CWE-22: ການຈໍາກັດຊື່ເສັ້ນທາງໄປຫາໄດເລກະທໍລີທີ່ຖືກຈໍາກັດທີ່ບໍ່ຖືກຕ້ອງ (``ເສັ້ນທາງຂ້າມຜ່ານ'')

· CWE-78: ການເຮັດໃຫ້ເປັນກາງທີ່ບໍ່ເໝາະສົມຂອງອົງປະກອບພິເສດທີ່ໃຊ້ໃນຄຳສັ່ງ OS (``OS Command
ສັກ'')*

· CWE-119: ການຈໍາກັດການປະຕິບັດທີ່ບໍ່ເຫມາະສົມພາຍໃນຂອບເຂດຂອງ Buffer ຄວາມຈໍາ (a
ພໍ່ແມ່ຂອງ CWE-120*, ດັ່ງນັ້ນອັນນີ້ຖືກສະແດງເປັນ CWE-119:CWE-120)

· CWE-120: Buffer Copy ໂດຍບໍ່ມີການກວດສອບຂະຫນາດຂອງການປ້ອນຂໍ້ມູນ (``Classic Buffer Overflow'')*

· CWE-126: Buffer Over-read

· CWE-134: Uncontrolled Format String*

· CWE-190: Integer Overflow ຫຼື Wraparound*

· CWE-250: ການປະຕິບັດດ້ວຍສິດທິພິເສດທີ່ບໍ່ຈໍາເປັນ

· CWE-327: ໃຊ້ລະບົບການເຂົ້າລະຫັດລັບທີ່ແຕກຫັກ ຫຼືມີຄວາມສ່ຽງ*

· CWE-362: ການ​ປະ​ຕິ​ບັດ​ພ້ອມ​ກັນ​ໂດຍ​ການ​ນໍາ​ໃຊ້​ຊັບ​ພະ​ຍາ​ກອນ​ທີ່​ແບ່ງ​ປັນ​ກັບ​ການ​ຊິງ​ທີ່​ບໍ່​ເຫມາະ​ສົມ​
(``ສະພາບການແຂ່ງຂັນ'')

· CWE-377: ໄຟລ໌ຊົ່ວຄາວທີ່ບໍ່ປອດໄພ

· CWE-676: ໃຊ້ຟັງຊັນອັນຕະລາຍທີ່ອາດຈະເກີດຂຶ້ນ*

· CWE-732: ການມອບໝາຍການອະນຸຍາດບໍ່ຖືກຕ້ອງສຳລັບຊັບພະຍາກອນທີ່ສຳຄັນ*

· CWE-785: ການ​ນໍາ​ໃຊ້​ຫນ້າ​ທີ່​ການ​ຈັດ​ການ​ເສັ້ນ​ທາງ​ໂດຍ​ບໍ່​ມີ​ການ Buffer ຂະ​ຫນາດ​ສູງ​ສຸດ (ລູກ​ຂອງ
CWE-120*, ດັ່ງນັ້ນອັນນີ້ສະແດງເປັນ CWE-120/CWE-785)

· CWE-807: ການເອື່ອຍອີງໃສ່ວັດສະດຸປ້ອນທີ່ບໍ່ເຊື່ອຖືໃນການຕັດສິນໃຈຄວາມປອດໄພ*

· CWE-829: ການລວມເອົາການທໍາງານຈາກ Sphere ການຄວບຄຸມທີ່ບໍ່ຫນ້າເຊື່ອຖື*

ທ່ານສາມາດເລືອກຊຸດຍ່ອຍສະເພາະຂອງ CWEs ເພື່ອລາຍງານໂດຍການໃຊ້ຕົວເລືອກ ``--regex'' (-e).
ຕົວເລືອກນີ້ຍອມຮັບການສະແດງອອກປົກກະຕິ, ດັ່ງນັ້ນທ່ານສາມາດເລືອກ CWEs ຫຼາຍ, ຕົວຢ່າງ, ``--regex
"CWE-120|CWE-126"''. ຖ້າທ່ານເລືອກ CWEs ຫຼາຍອັນດ້ວຍ ``|'' ໃນແຖວຄໍາສັ່ງທ່ານຈະ
ໂດຍປົກກະຕິຈໍາເປັນຕ້ອງອ້າງເຖິງຕົວກໍານົດການ (ນັບຕັ້ງແຕ່ unquoted ``|'' ແມ່ນສັນຍາລັກທໍ່).
Flawfinder ຖືກອອກແບບມາເພື່ອຕອບສະຫນອງຄວາມຕ້ອງການ CWE-Searchable.

ຖ້າເປົ້າຫມາຍຂອງທ່ານແມ່ນເພື່ອລາຍງານຊຸດຍ່ອຍຂອງ CWEs ທີ່ລະບຸໄວ້ໃນໄຟລ໌, ນັ້ນສາມາດບັນລຸໄດ້
ໃນລະບົບທີ່ຄ້າຍຄືກັບ Unix ໂດຍໃຊ້ຕົວເລືອກ ``--regex'' aka ``-e''. ໄຟລ໌ຕ້ອງຢູ່ໃນ
ຮູບແບບການສະແດງອອກປົກກະຕິ. ຕົວຢ່າງ, ``flawfinder -e $(cat file1)'' ຈະລາຍງານເທົ່ານັ້ນ
hits ທີ່ກົງກັບຮູບແບບໃນ ``file1''. ຖ້າ file1 ມີ ``CWE-120|CWE-126'' ມັນ
ພຽງແຕ່ລາຍງານ hits ທີ່ກົງກັບ CWEs ເຫຼົ່ານັ້ນ.

ບັນຊີລາຍຊື່ຂອງອົງປະກອບຄວາມປອດໄພ CWE ທັງຫມົດ (ລາຍເຊັນ / ຮູບແບບທີ່ flawfinder ຊອກຫາ)
ສາມາດພົບໄດ້ໂດຍການໃຊ້ຕົວເລືອກ ``--listrules''. ແຕ່​ລະ​ແຖວ​ລາຍ​ຊື່ token ລາຍ​ເຊັນ​
(ໂດຍປົກກະຕິແລ້ວຊື່ຟັງຊັນ) ທີ່ອາດຈະນໍາໄປສູ່ການຕີ, ລະດັບຄວາມສ່ຽງໃນຕອນຕົ້ນ, ແລະ
ການເຕືອນໄພເລີ່ມຕົ້ນ (ເຊິ່ງລວມມີຕົວລະບຸ CWE ເລີ່ມຕົ້ນ). ສໍາລັບຈຸດປະສົງສ່ວນໃຫຍ່ນີ້ແມ່ນ
ຍັງພຽງພໍຖ້າຫາກວ່າທ່ານຕ້ອງການທີ່ຈະເບິ່ງສິ່ງທີ່ອົງປະກອບຄວາມປອດໄພ CWE ແຜນທີ່ CWEs, ຫຼື
ປີ້ນກັບກັນ. ຕົວຢ່າງ, ເພື່ອເບິ່ງລາຍເຊັນສ່ວນໃຫຍ່ (ຊື່ຟັງຊັນ) ທີ່ແຜນທີ່ໄປຫາ
CWE-327, ໂດຍບໍ່ມີການເບິ່ງລະດັບຄວາມສ່ຽງເລີ່ມຕົ້ນຫຼືຂໍ້ຄວາມເຕືອນລາຍລະອຽດ, ດໍາເນີນການ ``flawfinder
--ລາຍການ | grep CWE-327 | ຕັດ -f1''. ທ່ານຍັງສາມາດເບິ່ງ tokens ໂດຍບໍ່ມີການສ້າງແຜນທີ່ CWE
ວິທີນີ້ໂດຍການແລ່ນ ``flawfinder -D --listrules | grep -v CWE-''. ຢ່າງໃດກໍຕາມ, ໃນຂະນະທີ່
--listrules ລາຍຊື່ອົງປະກອບຄວາມປອດໄພ CWE ທັງຫມົດ, ມັນພຽງແຕ່ລາຍຊື່ແຜນທີ່ເລີ່ມຕົ້ນຈາກ CWE
ອົງປະກອບຄວາມປອດໄພຕໍ່ກັບຕົວລະບຸ CWE. ມັນບໍ່ໄດ້ລວມເອົາການປັບປຸງທີ່ flawfinder
ນຳໃຊ້ (ຕົວຢ່າງ, ໂດຍການກວດສອບຕົວກໍານົດການທໍາງານ).

ຖ້າທ່ານຕ້ອງການແຜນທີ່ລະອຽດແລະແນ່ນອນລະຫວ່າງອົງປະກອບຄວາມປອດໄພ CWE ແລະ CWE
ຕົວລະບຸ, ລະຫັດແຫຼ່ງ flawfinder (ລວມຢູ່ໃນການແຈກຢາຍ) ແມ່ນສະຖານທີ່ທີ່ດີທີ່ສຸດ
ສໍາລັບຂໍ້ມູນນັ້ນ. ຂໍ້ມູນລາຍລະອຽດນີ້ແມ່ນມີຄວາມສົນໃຈຕົ້ນຕໍສໍາລັບຈໍານວນຫນ້ອຍເຫຼົ່ານັ້ນ
ຄົນທີ່ພະຍາຍາມປັບປຸງແຜນທີ່ CWE ຂອງ flawfinder ຫຼືປັບປຸງ CWE ໂດຍທົ່ວໄປ.
ລະຫັດແຫຼ່ງເອກະສານແຜນທີ່ລະຫວ່າງອົງປະກອບຄວາມປອດໄພກັບ CWE ທີ່ກ່ຽວຂ້ອງ
ຕົວລະບຸ, ແລະເປັນໄຟລ໌ Python ດຽວ. ຊຸດຂໍ້ມູນ `c_rules'' ກຳນົດກົດລະບຽບສ່ວນໃຫຍ່,
ໂດຍອ້າງອີງໃສ່ຫນ້າທີ່ອາດຈະເຮັດໃຫ້ການປັບປຸງເພີ່ມເຕີມ. ທ່ານ​ສາ​ມາດ​ຄົ້ນ​ຫາ​ໄດ້​
ຊຸດຂໍ້ມູນສໍາລັບຊື່ຟັງຊັນເພື່ອເບິ່ງສິ່ງທີ່ CWE ມັນສ້າງໂດຍຄ່າເລີ່ມຕົ້ນ; ຖ້າຕົວກໍານົດການທໍາອິດແມ່ນ
ບໍ່ແມ່ນ ''ປົກກະຕິ' ແລ້ວນັ້ນແມ່ນຊື່ຂອງວິທີການປັບປຸງ Python ທີ່ອາດຈະເລືອກທີ່ແຕກຕ່າງກັນ
CWEs (ຂຶ້ນກັບຂໍ້ມູນເພີ່ມເຕີມ). ໃນທາງກົງກັນຂ້າມ, ທ່ານສາມາດຄົ້ນຫາສໍາລັບ ``CWE-number''
ແລະຊອກຫາສິ່ງທີ່ອົງປະກອບຄວາມປອດໄພ (ລາຍເຊັນຫຼືຮູບແບບ) ຫມາຍເຖິງຕົວລະບຸ CWE ນັ້ນ.
ສໍາລັບປະຊາຊົນສ່ວນໃຫຍ່, ນີ້ແມ່ນຫຼາຍກ່ວາພວກເຂົາຕ້ອງການ; ຄົນສ່ວນໃຫຍ່ພຽງແຕ່ຕ້ອງການສະແກນຂອງເຂົາເຈົ້າ
ລະຫັດແຫຼ່ງເພື່ອຊອກຫາບັນຫາຢ່າງໄວວາ.

ຄວາມປອດໄພ


ຈຸດທັງຫມົດຂອງເຄື່ອງມືນີ້ແມ່ນເພື່ອຊ່ວຍຊອກຫາຈຸດອ່ອນເພື່ອໃຫ້ພວກເຂົາສາມາດແກ້ໄຂໄດ້.
ຢ່າງໃດກໍ່ຕາມ, ນັກພັດທະນາແລະນັກທົບທວນຕ້ອງຮູ້ວິທີການພັດທະນາຊອບແວທີ່ປອດໄພເພື່ອໃຊ້ມັນ
ເຄື່ອງມື, ເພາະວ່າຖ້າບໍ່ດັ່ງນັ້ນ, a fool ກັບ a ເຄື່ອງມື is ຍັງ a fool. ປື້ມຂອງຂ້ອຍຢູ່
http://www.dwheeler.com/secure-programs ອາດຈະຊ່ວຍໄດ້.

ເຄື່ອງມືນີ້, ຫຼາຍທີ່ສຸດ, ຄວນຈະເປັນພາກສ່ວນຂະຫນາດນ້ອຍຂອງຂະບວນການພັດທະນາຊອບແວຂະຫນາດໃຫຍ່
ອອກແບບມາເພື່ອລົບລ້າງ ຫຼືຫຼຸດຜ່ອນຜົນກະທົບຂອງຄວາມອ່ອນແອ. ນັກພັດທະນາແລະນັກທົບທວນ
ຕ້ອງການຮູ້ວິທີການພັດທະນາຊອບແວທີ່ປອດໄພ, ແລະພວກເຂົາຕ້ອງການໃຊ້ຄວາມຮູ້ນີ້ເພື່ອຫຼຸດຜ່ອນ
ຄວາມສ່ຽງຂອງຄວາມອ່ອນແອໃນສະຖານທີ່ທໍາອິດ.

ເຄື່ອງມືຊອກຫາຈຸດອ່ອນທີ່ແຕກຕ່າງກັນມີແນວໂນ້ມທີ່ຈະຊອກຫາຊ່ອງໂຫວ່ທີ່ແຕກຕ່າງກັນ. ດັ່ງນັ້ນ, ທ່ານ
ທີ່ດີທີ່ສຸດແມ່ນການນໍາໃຊ້ການທົບທວນຄືນຂອງມະນຸດແລະເຄື່ອງມືທີ່ຫລາກຫລາຍ. ເຄື່ອງມືນີ້ສາມາດຊ່ວຍຊອກຫາບາງຢ່າງ
ຄວາມອ່ອນແອ, ແຕ່ບໍ່ແມ່ນທັງຫມົດ.

ທ່ານຄວນວິເຄາະ a ຄັດລອກ ຂອງໂຄງການແຫຼ່ງກໍາລັງຖືກວິເຄາະ, ບໍ່ແມ່ນໄດເລກະທໍລີ
ທີ່ສາມາດແກ້ໄຂໄດ້ໂດຍນັກພັດທະນາໃນຂະນະທີ່ flawfinder ກໍາລັງປະຕິບັດການວິເຄາະ. ນີ້​ແມ່ນ
ໂດຍສະເພາະແມ່ນ ຄວາມຈິງຖ້າທ່ານບໍ່ຈໍາເປັນເຊື່ອນັກພັດທະນາຂອງໂຄງການທີ່ຖືກວິເຄາະ.
ຖ້າຜູ້ໂຈມຕີມີການຄວບຄຸມໄຟລ໌ໃນຂະນະທີ່ທ່ານວິເຄາະພວກມັນ, ຜູ້ໂຈມຕີສາມາດເຮັດໄດ້
ຍ້າຍໄຟລ໌ໄປມາ ຫຼືປ່ຽນເນື້ອຫາຂອງມັນເພື່ອປ້ອງກັນບໍ່ໃຫ້ເກີດບັນຫາຄວາມປອດໄພ
(ຫຼືສ້າງຄວາມປະທັບໃຈຂອງບັນຫາບ່ອນທີ່ບໍ່ມີ). ຖ້າເຈົ້າເປັນຫ່ວງ
ຜູ້ຂຽນໂປລແກລມທີ່ເປັນອັນຕະລາຍທ່ານຄວນເຮັດແນວນີ້ຢ່າງໃດກໍ່ຕາມ, ເພາະວ່າຫຼັງຈາກການວິເຄາະທ່ານຈະຈໍາເປັນຕ້ອງເຮັດ
ກວດສອບວ່າລະຫັດແລ່ນໃນທີ່ສຸດແມ່ນລະຫັດທີ່ທ່ານວິເຄາະ. ນອກຈາກນັ້ນ, ຢ່າໃຊ້
--allowlink ທາງ​ເລືອກ​ໃນ​ກໍ​ລະ​ນີ​ດັ່ງ​ກ່າວ​; ຜູ້ໂຈມຕີສາມາດສ້າງລິ້ງສັນຍາລັກທີ່ເປັນອັນຕະລາຍຕໍ່ກັບໄຟລ໌
ຢູ່ນອກພື້ນທີ່ລະຫັດແຫຼ່ງຂອງພວກເຂົາ (ເຊັ່ນ: / etc / passwd).

ລະບົບການຄຸ້ມຄອງລະຫັດແຫຼ່ງ (ເຊັ່ນ SourceForge ແລະ Savannah) ແນ່ນອນຕົກຢູ່ໃນນີ້
ປະເພດ; ຖ້າທ່ານກໍາລັງຮັກສາຫນຶ່ງໃນລະບົບເຫຼົ່ານັ້ນ, ທໍາອິດຄັດລອກຫຼືສະກັດໄຟລ໌ເຂົ້າໄປໃນ
ໄດເລກະທໍລີແຍກຕ່າງຫາກ (ທີ່ບໍ່ສາມາດຄວບຄຸມໄດ້ໂດຍຜູ້ໂຈມຕີ) ກ່ອນທີ່ຈະດໍາເນີນການ flawfinder ຫຼື
ເຄື່ອງມືການວິເຄາະລະຫັດອື່ນໆ.

ໃຫ້ສັງເກດວ່າ flawfinder ພຽງແຕ່ເປີດໄຟລ໌ປົກກະຕິ, ໄດເລກະທໍລີ, ແລະ (ຖ້າຮ້ອງຂໍ) ສັນຍາລັກ
ການເຊື່ອມຕໍ່; ມັນຈະບໍ່ເປີດໄຟລ໌ປະເພດອື່ນໆ, ເຖິງແມ່ນວ່າການເຊື່ອມຕໍ່ສັນຍາລັກຈະຖືກສ້າງຂື້ນກັບພວກມັນ.
ນີ້ຕ້ານຜູ້ໂຈມຕີທີ່ໃສ່ປະເພດໄຟລ໌ທີ່ຜິດປົກກະຕິເຂົ້າໄປໃນລະຫັດແຫຼ່ງ. ຢ່າງໃດກໍຕາມ, ນີ້
ເຮັດວຽກພຽງແຕ່ຖ້າລະບົບໄຟລ໌ທີ່ຖືກວິເຄາະບໍ່ສາມາດຖືກແກ້ໄຂໂດຍຜູ້ໂຈມຕີໃນລະຫວ່າງ
ການວິເຄາະ, ດັ່ງທີ່ແນະນໍາຂ້າງເທິງ. ການປົກປ້ອງນີ້ຍັງໃຊ້ບໍ່ໄດ້ຢູ່ໃນເວທີ Cygwin,
ແຕ່ໂຊກບໍ່ດີ.

ລະບົບ Cygwin (Unix emulation ຢູ່ເທິງສຸດຂອງ Windows) ມີບັນຫາເພີ່ມເຕີມຖ້າ flawfinder
ຖືກນໍາໃຊ້ເພື່ອວິເຄາະໂຄງການທີ່ນັກວິເຄາະບໍ່ສາມາດໄວ້ວາງໃຈໄດ້. ບັນຫາແມ່ນຍ້ອນການອອກແບບ
ຂໍ້ບົກພ່ອງໃນ Windows (ທີ່ມັນສືບທອດມາຈາກ MS-DOS). ໃນ Windows ແລະ MS-DOS, ຊື່ໄຟລ໌ທີ່ແນ່ນອນ
(ເຊັ່ນ: ``com1'') ຖືກປະຕິບັດໂດຍອັດຕະໂນມັດໂດຍລະບົບປະຕິບັດການເປັນຊື່ຂອງ
ອຸປະກອນຕໍ່ພ່ວງ, ແລະນີ້ແມ່ນຄວາມຈິງເຖິງແມ່ນວ່າໃນເວລາທີ່ຊື່ເສັ້ນທາງເຕັມຈະຖືກມອບໃຫ້. ແມ່ນແລ້ວ, Windows ແລະ MS-DOS
ກໍ່ຖືກອອກແບບນີ້ບໍ່ດີ. Flawfinder ຈັດການກັບສິ່ງນີ້ໂດຍການກວດສອບວ່າລະບົບໄຟລ໌ແມ່ນຫຍັງ
object ແມ່ນ, ແລະຫຼັງຈາກນັ້ນພຽງແຕ່ເປີດໄດເລກະທໍລີແລະໄຟລ໌ປົກກະຕິ (ແລະ symlinks ຖ້າເປີດໃຊ້).
ແຕ່ຫນ້າເສຍດາຍ, ນີ້ບໍ່ໄດ້ເຮັດວຽກກ່ຽວກັບ Cygwin; ຢູ່ໃນຢ່າງຫນ້ອຍບາງສະບັບຂອງ Cygwin ໃນບາງ
ຮຸ່ນຂອງ Windows, ພຽງແຕ່ພະຍາຍາມກໍານົດວ່າໄຟລ໌ແມ່ນປະເພດຂອງອຸປະກອນສາມາດເຮັດໃຫ້ເກີດການ
ໂຄງ​ການ​ທີ່​ຈະ​ວາງ​ສາຍ​. ວິທີແກ້ໄຂບັນຫາແມ່ນການລຶບ ຫຼືປ່ຽນຊື່ໄຟລ໌ທີ່ຖືກຕີຄວາມໝາຍ
ເປັນຊື່ອຸປະກອນກ່ອນທີ່ຈະປະຕິບັດການວິເຄາະ. ເຫຼົ່ານີ້ເອີ້ນວ່າ "ຊື່ສະຫງວນ'' ແມ່ນ
CON, PRN, AUX, CLOCK$, NUL, COM1-COM9, ແລະ LPT1-LPT9, ຕາມທາງເລືອກດ້ວຍການຂະຫຍາຍ
(ເຊັ່ນ: ``com1.txt''), ໃນໄດເລກະທໍລີໃດກໍ່ຕາມ, ແລະໃນກໍລະນີໃດກໍ່ຕາມ (Windows ແມ່ນບໍ່ສໍາຄັນ).

Do ບໍ່ ໂຫຼດ ຫຼື ແຕກຕ່າງ hitlists ຈາກແຫຼ່ງທີ່ບໍ່ເຊື່ອຖື. ພວກເຂົາເຈົ້າໄດ້ຖືກປະຕິບັດໂດຍການນໍາໃຊ້
ໂມດູນດອງ Python, ແລະໂມດູນດອງບໍ່ໄດ້ມີຈຸດປະສົງເພື່ອຄວາມປອດໄພຕໍ່ກັບຄວາມຜິດພາດ
ຫຼືສ້າງຂໍ້ມູນທີ່ເປັນອັນຕະລາຍ. hitlists ທີ່ເກັບຮັກສາໄວ້ແມ່ນມີຈຸດປະສົງເພື່ອນໍາໃຊ້ໃນພາຍຫລັງໂດຍດຽວກັນ
ຜູ້ໃຊ້ທີ່ສ້າງ hitlist; ໃນສະພາບການນັ້ນ, ຂໍ້ຈໍາກັດນີ້ບໍ່ແມ່ນບັນຫາ.

ໃຊ້ flawfinder ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net


ເຊີບເວີ ແລະສະຖານີເຮັດວຽກຟຣີ

ດາວໂຫຼດແອັບ Windows ແລະ Linux

  • 1
    ເຟດ
    ເຟດ
    Phaser ເປັນການເປີດໄວ, ຟຣີ, ແລະມ່ວນຊື່ນ
    ແຫຼ່ງ HTML5 ກອບເກມທີ່ສະເຫນີ
    WebGL ແລະ Canvas rendering ທົ່ວ
    desktop ແລະຕົວທ່ອງເວັບມືຖື. ເກມ
    ສາມາດຮ່ວມ...
    ດາວໂຫລດ Phaser
  • 2
    ເຄື່ອງຈັກ VASSAL
    ເຄື່ອງຈັກ VASSAL
    VASSAL ແມ່ນເຄື່ອງຈັກເກມສໍາລັບການສ້າງ
    ສະບັບເອເລັກໂຕຣນິກຂອງກະດານພື້ນເມືອງ
    ແລະເກມບັດ. ມັນສະຫນອງການສະຫນັບສະຫນູນສໍາລັບ
    ການສະແດງຊິ້ນສ່ວນເກມແລະການໂຕ້ຕອບ,
    ແລະ ...
    ດາວໂຫລດ VASSAL Engine
  • 3
    OpenPDF - ສ້ອມຂອງ iText
    OpenPDF - ສ້ອມຂອງ iText
    OpenPDF ແມ່ນຫ້ອງສະຫມຸດ Java ສໍາລັບການສ້າງ
    ແລະແກ້ໄຂໄຟລ໌ PDF ດ້ວຍ LGPL ແລະ
    ໃບອະນຸຍາດແຫຼ່ງເປີດ MPL. OpenPDF ແມ່ນ​
    LGPL/MPL open source ຜູ້ສືບທອດ iText,
    a
    ດາວໂຫລດ OpenPDF - Fork ຂອງ iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - ລະບົບສໍາລັບການອັດຕະໂນມັດ
    Geoscientific Analyzes - ແມ່ນພູມສາດ
    ຊອບແວລະບົບຂໍ້ມູນຂ່າວສານ (GIS) ກັບ
    ຄວາມສາມາດອັນຍິ່ງໃຫຍ່ສໍາລັບ geodata
    ການປຸງແຕ່ງ ແລະ ana...
    ດາວໂຫລດ SAGA GIS
  • 5
    ກ່ອງເຄື່ອງມືສໍາລັບ Java/JTOPen
    ກ່ອງເຄື່ອງມືສໍາລັບ Java/JTOPen
    IBM Toolbox ສໍາລັບ Java / JTOPen ແມ່ນ a
    ຫ້ອງສະຫມຸດຂອງຫ້ອງຮຽນ Java ສະຫນັບສະຫນູນ
    ໂປຣແກຣມລູກຄ້າ/ເຊີບເວີ ແລະອິນເຕີເນັດ
    ແບບຈໍາລອງກັບລະບົບທີ່ແລ່ນ OS/400,
    i5/OS, o...
    ດາວໂຫລດ Toolbox ສໍາລັບ Java/JTOPen
  • 6
    D3.js
    D3.js
    D3.js (ຫຼື D3 ສໍາລັບເອກະສານທີ່ຂັບເຄື່ອນດ້ວຍຂໍ້ມູນ)
    ເປັນຫ້ອງສະຫມຸດ JavaScript ທີ່ອະນຸຍາດໃຫ້ທ່ານ
    ເພື່ອຜະລິດຂໍ້ມູນແບບເຄື່ອນໄຫວ, ການໂຕ້ຕອບ
    ການສະແດງພາບໃນຕົວທ່ອງເວັບ. ດ້ວຍ D3
    ເຈົ້າ ...
    ດາວໂຫລດ D3.js
  • ເພີ່ມເຕີມ »

Linux ຄຳ ສັ່ງ

  • 1
    Abidiff
    Abidiff
    abidiff - ປຽບທຽບ ABIs ຂອງໄຟລ໌ ELF
    abidiff ປຽບທຽບ Application Binary
    ການໂຕ້ຕອບ (ABI) ຂອງສອງຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ
    ໃນຮູບແບບ ELF. ມັນ​ອອກ​ຄວາມ​ຫມາຍ​
    ລາຍງານ...
    ແລ່ນ abidiff
  • 2
    abidw
    abidw
    abidw - serialize ABI ຂອງ ELF ໄດ້
    file abidw ອ່ານຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນໃນ ELF
    ຮູບແບບແລະປ່ອຍຕົວສະແດງ XML
    ABI ຂອງ​ຕົນ​ກັບ​ຜົນ​ຜະ​ລິດ​ມາດ​ຕະ​ຖານ​. ໄດ້
    ປ່ອຍອອກມາ...
    ແລ່ນ abidw
  • 3
    copac2xml
    copac2xml
    bibutils - ການ​ປ່ຽນ​ແປງ​ບັນ​ນາ​ທິ​ການ​
    ເຄື່ອງໃຊ້ສອຍ...
    ແລ່ນ copac2xml
  • 4
    ຕຳຫຼວດ
    ຕຳຫຼວດ
    copt - SYSNOPIS optimizer:
    copt file.. DESCRIPTION: copt is a
    ເຄື່ອງມືເພີ່ມປະສິດທິພາບ pephole ທົ່ວໄປ. ມັນ
    ອ່ານລະຫັດຈາກການປ້ອນຂໍ້ມູນມາດຕະຖານຂອງມັນ ແລະ
    ຂຽນ...
    ແລ່ນ copt
  • 5
    collect_stx_titles
    collect_stx_titles
    collect_stx_titles - ລວບລວມຫົວຂໍ້
    ປະກາດຈາກເອກະສານ Stx ...
    ແລ່ນ collect_stx_titles
  • 6
    gatling-bench
    gatling-bench
    bench - http benchmark ...
    ແລ່ນ gatling-bench
  • ເພີ່ມເຕີມ »

Ad