Hey Habr!
เปเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเปเบฅเบดเบชเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบกเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบเบฑเบเปเบเบทเปเบญเบเบกเบทเบเบฒเบเบงเบดเปเบเบฒเบฐเบฅเบฐเบซเบฑเบเบชเบฐเบเบดเบ (SAST). เบญเบญเบเบเบฒเบเบเปเบญเบเบเบงเบเปเบเบปเบฒเบเบฑเบเบซเบกเบปเบเปเบฎเบฑเบเบงเบฝเบเบชเบฐเปเบฅเปเบ. เปเบเปเบเบญเบ, เบกเบฑเบเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบเบถเปเบเบเบฑเบเปเบเบเบเบฒเบเปเบฅเบฐเปเบเบฑเบเปเบเปเบฅเบขเบตเบเบตเปเปเบเปเปเบเบกเบฑเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบงเปเบฒเปเบเบฑเบเปเบเปเบฅเบขเบตเปเบซเบผเบปเปเบฒเบเบตเปเบเบทเบเบเบธเปเบกเบเบญเบเปเบเบเบเบปเบเบฅเบฐเบเบฝเบเบเบญเบเบเบฒเบเบงเบดเปเบเบฒเบฐเปเบเบงเปเบ. เปเบเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบเบญเบเบเปเบญเบ, เบซเบเบถเปเบเปเบเปเบเบทเปเบญเบเปเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบตเปเบชเบธเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบฅเบทเบญเบเปเบเบทเปเบญเบเบกเบท SAST เปเบกเปเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบฑเบเปเบเปเบเบกเบฑเบเปเบซเปเบเบฑเบเบชเบฐเปเบเบฒเบฐเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเปเบฒเบ, เบเบท, เบเบฝเบเปเบฅเบฐเบเปเบฝเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบซเบผเบท, เบเปเบญเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเบเบทเบเปเบญเบตเปเบเปเบฅเบทเปเบญเบเป, Custom Queries.
เบเบงเบเปเบฎเบปเบฒเบชเปเบงเบเบซเบผเบฒเบเบกเบฑเบเปเบเป Checkmarx - เปเบเบฑเบเบเบปเบงเบงเบดเปเบเบฒเบฐเบฅเบฐเบซเบฑเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเปเบฅเบฐเบกเบตเบญเปเบฒเบเบฒเบเบซเบผเบฒเบ. เปเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเปเบญเบเบเบฐเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบเบฐเบชเบปเบเบเบฒเบเบเบญเบเบเปเบญเบเปเบเบเบฒเบเบเบฝเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบชเปเบฒเบฅเบฑเบเบกเบฑเบ.
เบเบฒเบเบฐเบฅเบฒเบเปเบเบทเปเบญเบซเบฒ
-
เบเปเปเบกเบนเบเบเบปเปเบงเปเบเบเปเบฝเบงเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบ -
"เบงเบฑเบเบเบฐเบเบฒเบเบธเบเบปเบก" เบชเปเบฒเบฅเบฑเบเบเบนเปเปเบฅเบตเปเบกเบเบปเปเบ
เปเบเบปเปเบฒ
เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบเบฐเบเปเบฒเบซเบเบถเปเบเปเบเบเบปเบเบเบงเบฒเบกเบเปเบฒเบเบงเบเบซเบเปเบญเบเปเบเบเบฒเบชเบฒเบฅเบฑเบเปเบเบเบเปเบฝเบงเบเบฑเบเบฅเบฑเบเบชเบฐเบเบฐเบเบญเบเบเบฒเบเบเบฝเบเบเปเบฒเบเบฒเบกเบชเปเบฒเบฅเบฑเบ Checkmarx. เบกเบฑเบเปเบเปเบเบทเบเบเบฑเบเบเบตเบกเบกเบฒเปเบHabrรฉเปเบเบเบญเบเบเปเบฒเบเบเบญเบ 2019 เบเบฒเบเปเบเปเบซเบปเบงเบเปเป:
เบกเบฑเบเบเบงเบเบชเบญเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบเบเบฝเบเบเปเบฒเบเบฒเบกเบเปเบฒเบญเบดเบเปเบ CxQL (Checkmarx Query Language) เบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเบขเปเบฒเบเปเบฅเบฐเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเบดเบเบซเบผเบฑเบเบเบฒเบเบเบทเปเบเบเบฒเบเบเบญเบเบงเบดเบเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบงเบดเปเบเบฒเบฐ.
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเปเปเปเบฎเบฑเบเบเปเปเบฒเบชเบดเปเบเบเบตเปเปเบเปเบญเบฐเบเบดเบเบฒเบเปเบงเปเปเบเบเบฑเปเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฒเบเบเบฒเบเบเบฑเบเบเบฐเบเบฑเบเบเบปเบเบขเบนเป. เปเบเบเบปเบเบเบงเบฒเบกเบเบญเบเบเปเบญเบเบเปเบญเบเบเบฐเบเบฐเบเบฒเบเบฒเบกเบฅเบงเบเบฅเบงเบกเบเบฐเปเบเบเบเบญเบ "เบเบฒเบเบฅเบงเบเบฅเบงเบกเบชเบนเบ", เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบฒเบชเบฐเปเบเบฒเบฐเบเบตเปเบเปเบญเบเบเบปเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ Checkmarx. เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเบญเบ rack เบชเบฐโเบซเบกเบญเบโเบเบญเบโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเบฝเบงโเบเบฑเบโเบซเบผเบฒเบโเบเบฑเบโเบซเบฒโเปเบซเบผเบปเปเบฒโเบเบตเป. เบเบฒเบเบเบฑเปเบเบเปเปเบกเบตเบเปเปเบกเบนเบเบเบฝเบเบเปเปเบเปเบญเบเบฐเบชเบฒเบ, เปเบฅเบฐเบเบฒเบเบเบฑเปเบเบกเบฑเบเบเปเปเบเบฒเบเบเบตเปเบเบฐเปเบเบปเปเบฒเปเบเบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเบเปเบญเบเบเบฒเบ. เบเปเบญเบเบซเบงเบฑเบเบงเปเบฒเบเบฐเบชเบปเบเบเบฒเบเบเบญเบเบเปเบญเบเปเบฅเบฐเบเบฒเบเบเบญเบเบเปเปเบซเบผเบฑเบเบเบญเบเบเปเบญเบเบเบฐเบเปเปเบกเบตเบเบฐเปเบซเบเบ, เปเบฅเบฐ "เบเบฒเบเบฅเบงเบเบฅเบงเบกเบชเบนเบเบเบฒเบเบชเบญเบเบเบฒเบกเบเบตเปเบเปเบฒเบซเบเบปเบเปเบญเบ" เบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบเบฐเบซเบเบฑเบเปเบงเบฅเบฒเบชเบญเบเบชเบฒเบกเบเบปเปเบงเปเบกเบเบซเบผเบทเบชเบญเบเบชเบฒเบกเบเบปเปเบงเปเบกเบเบเบญเบเปเบชเบฑเปเบเบเบฐเบชเบฒเบ. เบเบฑเปเบเบเบฑเปเบ, เปเบซเปเปเบฅเบตเปเบกเบเบปเปเบ!
เบเปเปเบกเบนเบเบเบปเปเบงเปเบเบเปเบฝเบงเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบ
เบเปเบฒเบญเบดเบ, เปเบซเปเปเบเบดเปเบเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบทเปเบเบเบฒเบเบเปเบฒเบเบงเบเบซเบเปเบญเบเปเบฅเบฐเบเบฐเบเบงเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบ, เบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเปเบเบปเปเบฒเปเบเบเบตเบเบถเปเบเบเปเบฝเบงเบเบฑเบเบชเบดเปเบเบเบตเปเบเบฐเปเบเบตเบเบเบถเปเบเบเปเปเปเบ. เปเบฅเบฐเบเปเบญเบเบงเปเบฒเปเบญเบเบฐเบชเบฒเบเบเปเปเปเบเปเปเบงเบปเปเบฒเบซเบเบฑเบเบเปเบฝเบงเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเปเบซเบผเบทเบเบทเบเปเบเบตเบเปเบเปเบซเบผเบฒเบเปเบเปเบเบเบชเปเบฒเบ, เปเบเบดเปเบเบเปเปเบชเบฐเบเบงเบเบซเบผเบฒเบ.
-
เบเบปเบโเบฅเบฐโเบเบฝเบโเปเบกเปเบโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบเปเบฒโเปเบเปโเปเบโเบฅเบฐโเบซเบงเปเบฒเบโเบเบฒเบโเบชเบฐโเปเบเบโเปเบเบโเบญเบตเบโเปเบชเปโเบเบฒเบ preset เปเบฅเบทเบญเบโเปเบงเปโเปเบโเบเบญเบโเปเบฅเบตเปเบกโเบเบปเปเบ (เบเบธเบโเบเบญเบโเบเบปเบโเบฅเบฐโเบเบฝเบโเบเบฒเบโเปเบเบทเปเบญเบโเปเบซเบงโ)โ. เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบชเปเบฒเบโเบเปเบฒโเบเบงเบโเบเปเปโเบเปเบฒโเบเบฑเบ presets เปเบเปโ, เปเบฅเบฐโเปเบเปโเบเบญเบโเบงเปเบฒโเบงเบดโเบเบตโเบเบฒเบโเบเบฑเบโเปเบเบโเบชเปเบฒเบโเปเบซเปโเปเบเบปเบฒโเปเบเบปเปเบฒโเปเบกเปเบโเบเบถเปเบโเบเบฑเบโเบชเบฐโเปเบเบฒเบฐโเบเบญเบโเบเบฐโเบเบงเบโเบเบฒเบโเบเบญเบโเบเปเบฒเบโ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบเบธเปเบกเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒเบเบฒเบกเบเบฒเบชเบฒเบซเบผเบทเปเบฅเบทเบญเบ presets เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเปเบเบเบเบฒเบ. เบเปเบฒเบเบงเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเปเบเบทเปเบญเบเปเบซเบงเบเบปเบเบเบฐเบเบปเบเบเปเปเบเบงเบฒเบกเปเบงเปเบฅเบฐเบเบงเบฒเบกเบเบทเบเบเปเบญเบเบเบญเบเบเบฒเบเบชเบฐเปเบเบ.
เบเบฒเบเบเบฑเปเบเบเปเบฒ Preset เปเบเบเบฒเบเปเบเปเบเบญเบ Checkmarx
-
เบเบปเบเบฅเบฐเบเบฝเบเบเบทเบเปเบเปเปเบเปเบเปเบเบทเปเบญเบเบกเบทเบเบดเปเบชเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒ CxAudit. เบเบตเปเปเบกเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ desktop เบเบตเปเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเปเบเป Checkmarx. เปเบเบทเปเบญเบโเบกเบทโเบเบตเปโเบกเบตโเบชเบญเบโเบฎเบนเบโเปเบเบโเบเบฒเบโเบเปเบฒโเปเบเบตเบโเบเบฒเบโ: เบเบปเบโเบฅเบฐโเบเบฝเบโเบเบฒเบโเปเบเปโเปเบโเปเบฅเบฐโเบเบฒเบโเบงเบดโเปเบเบฒเบฐโเบเบปเบโเปเบเปโเบฎเบฑเบโเบเบญเบ scan เบเบฐโเบเบดโเบเบฑเบโเปเบฅเปเบงโ.
เบเบฒเบเปเบเปเบเบญเบ CxAudit
-
เบเบปเบเบฅเบฐเบเบฝเบเปเบ Checkmarx เบเบทเบเปเบเปเบเบญเบญเบเปเบเบเบเบฒเบชเบฒ, เบเบฑเปเบเปเบกเปเบ, เปเบเปเบฅเบฐเบเบฒเบชเบฒเบกเบตเบเบธเบเบเปเบฒเบเบฒเบกเบเบญเบเบเบปเบเปเบญเบ. เบเบฑเบเบกเบตเบเบฒเบเบเบปเบเบฅเบฐเบเบฝเบเบเบปเปเบงเปเบเบเบตเปเบเปเบฒเปเบเปเปเบเบเบเปเปเบเปเบฒเบเบถเบเปเบเบดเบเบเบฒเบชเบฒ, เปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบญเบฑเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒเบเบฒเบเบชเบญเบเบเบฒเบกเบเบทเปเบเบเบฒเบ. เบชเปเบฒเบฅเบฑเบเบชเปเบงเบเปเบซเบเป, เบเบฒเบเบชเบญเบเบเบฒเบกเบเบทเปเบเบเบฒเบเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบเบญเบเบซเบฒเบเปเปเบกเบนเบเบเบตเปเบเบปเบเบฅเบฐเบเบฝเบเบญเบทเปเบเปเปเบเป.
เบเบฒเบโเปเบเปเบโเบเบฑเบโเบฅเบฐโเบเบฝเบโเปเบเบโเบเบฒโเบชเบฒโ
-
เบเบปเบเบฅเบฐเบเบฝเบเปเบกเปเบ "เบเบฐเบเบดเบเบฑเบเปเบเป" เปเบฅเบฐ "เบเปเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเป" (เบเบฐเบเบดเบเบฑเบเปเบฅเบฐเบเปเปเปเบเปเบเบฐเบเบดเบเบฑเบ). เบเปเปเปเบกเปเบเบเบทเปเบเบตเปเบเบทเบเบเปเบญเบ, เปเบเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบเบญเบเบเปเบญเบ, เปเบเปเบเบฑเปเบเปเบกเปเบเบชเบดเปเบเบเบตเปเบกเบฑเบเปเบเบฑเบ. เปเบชเบฑเปเบเบเบฒเบเบฅเบธเปเบกเปเบกเปเบเบงเปเบฒเบเบปเบเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบ "เบเบฐเบเบดเบเบฑเบเปเบเป" เบเบฐเบเบทเบเบชเบฐเปเบเบเบขเบนเปเปเบเบเบปเบเบเบฒเบเบชเบฐเปเบเบเปเบ UI, เปเบฅเบฐเบเบปเบเบฅเบฐเบเบฝเบ "เบเปเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเป" เบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเปเบเปเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบงเบเปเบเบปเบฒเปเบเบเบฒเบเบฎเปเบญเบเบเปเบญเบทเปเบเป (เปเบเบเปเบเบทเปเบญเปเบเปเปเบฅเปเบง, เบเบฝเบเปเบเปเบซเบเปเบฒเบเบตเป).
เบเบฒเบเบเปเบฒเบเบปเบเบเบฐเปเบเบเบเบปเบเบฅเบฐเบเบฝเบเปเบเปเบงเบฅเบฒเบชเปเบฒเบ
-
เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบเบปเบเบฅเบฐเบเบฝเบเปเบซเบกเปเบซเบผเบทเปเบชเบตเบก / เบเบฝเบเปเบซเบกเปเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบง. เปเบเบทเปเบญเบเบฝเบเบเบปเบเบฅเบฐเบเบฝเบเปเบซเบกเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบญเบเบซเบฒเบกเบฑเบเบขเบนเปเปเบเบเบปเปเบเปเบกเป, เบเบฅเบดเบเบเบงเบฒเปเบฅเบฐเปเบฅเบทเบญเบ "เบเบปเบเปเบฅเบตเบ" เบเบฒเบเปเบกเบเบนเปเบฅเบทเปเบญเบเบฅเบปเบ. เบกเบฑเบเปเบเบฑเบเบชเบดเปเบเบชเปเบฒเบเบฑเบเบเบตเปเบเบฐเบเบทเปเบเปเบฒเบขเบนเปเบเบตเปเบเบตเปเบงเปเบฒเบเบปเบเบฅเบฐเบเบฝเบเปเบซเบกเปเบเปเปเปเบเปเบเบทเบเบฅเบงเบกเปเบเบปเปเบฒเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบทเปเบญเบเบเบปเปเบเปเบฅเบฐเบเปเปเบกเบตเบเบฒเบเปเบเบทเปเบญเบเปเบซเบง. เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเปเบฒเปเบเปเบเบงเบเบกเบฑเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบตเบเปเบเปเบเบงเบเบกเบฑเบเบขเบนเปเปเบเปเบกเบเบน "Preset Manager" เปเบเปเบเบทเปเบญเบเบกเบท. เบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบเบฝเบเบเบทเบเปเบซเบกเปเบเบฑเบเบเบปเบเบฎเบฑเบเบชเบฒเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบเบเบงเบเปเบเบปเบฒ, เบเบฑเปเบเปเบกเปเบ, เบเปเบฒเบเบปเบเบฅเบฐเบเบฝเบเบกเบตเบเบฒเบเปเบเบทเปเบญเบเปเบซเบง, เบกเบฑเบเบเบฐเบเบฑเบเบเบปเบเบขเบนเปเปเบฅเบฐเบเบฐเบเบทเบเบเปเบฒเปเบเปเบเปเปเบเบเบฑเบเบเบต.
เบเบปเบงเบขเปเบฒเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเปเบซเบกเปเปเบเบชเปเบงเบเบเบดเบเบเปเป Preset Manager
-
เปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ, "เบเบปเปเบเปเบกเป" เบเบญเบเบเบฒเบเบฎเปเบญเบเบเปเปเบกเปเบเบเบทเบเบชเปเบฒเบเบเบถเปเบ, เปเบเบดเปเบเบเบถเปเบเบเบฑเบเบชเบดเปเบเบเบตเป. เบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเปเบเบฑเบเบเปเบฒเบเปเปเบกเบนเบเปเบกเปเบเบเบฐเบเบดเบเบฑเบเบเบฑเปเบเบเปเบฒเบญเบดเบ, เปเบฅเบฐเบเบนเปเบเบตเปเปเบเปเบกเบฑเบเบเบตเบชเบญเบ. เบเบปเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเปเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบเบฒเบเบเบงเบฒเบกเบเปเบฒ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเปเบฒเปเบเปเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบง, เบกเบฑเบเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเปเบฎเบฑเบเปเบเบงเบเบฑเปเบ, เบเบตเปเบเบฐเบซเบผเบธเบเบเปเบญเบเปเบงเบฅเบฒเบเบฒเบเบชเบฐเปเบเบ.
-
เบเบปเบเบฅเบฐเบเบฝเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเปเบเบฅเบฐเบเบฑเบเบเปเบฒเบเป:
-
เบชเปเบฒเบฅเบฑเบเบฅเบฐเบเบปเบเบเบฑเบเบซเบกเบปเบ - เบเบฐเบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบฐเปเบเบเปเบเบเบเบฒเบเปเบเป
-
เปเบเบฅเบฐเบเบฑเบเบเบตเบกเบเบฒเบ (เบเบตเบกเบเบฒเบ) - เบเบฝเบเปเบเปเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบชเบฐเปเบเบเปเบเบเบเบฒเบเปเบเบเบตเบกเบเบฒเบเบเบตเปเปเบฅเบทเบญเบ.
-
เปเบเบฅเบฐเบเบฑเบเปเบเบเบเบฒเบ - เบเบฐเบเบทเบเบเปเบฒเปเบเปเปเบเปเบเบเบเบฒเบเบชเบฐเปเบเบฒเบฐเปเบเบซเบเบถเปเบ
เบเบฒเบเบเปเบฒเบเบปเบเบฅเบฐเบเบฑเบเบเบตเปเบเบปเบเบฅเบฐเบเบฝเบเบเบฐเบเบทเบเบเปเบฒเปเบเป
"เบงเบฑเบเบเบฐเบเบฒเบเบธเบเบปเบก" เบชเปเบฒเบฅเบฑเบเบเบนเปเปเบฅเบตเปเบกเบเบปเปเบ
เปเบฅเบฐเบเปเบญเบเบเบฐเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเบฒเบเบชเบดเปเบเบเบตเปเปเบฎเบฑเบเปเบซเปเบเปเบญเบเบกเบตเบเปเบฒเบเบฒเบก, เปเบฅเบฐเบเปเบญเบเบเบฐเบชเบฐเปเบเบเปเบเบฑเบเบเบดเบเบเปเบฒเบเบงเบเบซเบเบถเปเบเบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเบตเบงเบดเบเบเปเบฒเบเบเบถเปเบเบซเบผเบฒเบ.
เบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบตเปเบกเบตเบฅเบฒเบเบเบทเป
- ะฒััะธัะฐะฝะธะต ะพะดะฝะพะณะพ ะธะท ะดััะณะพะณะพ (list2 - list1)
* ะฟะตัะตัะตัะตะฝะธะต ัะฟะธัะบะพะฒ (list1 * list2)
+ ัะปะพะถะตะฝะธะต ัะฟะธัะบะพะฒ (list1 + list2)
& (ะปะพะณะธัะตัะบะพะต ะ) - ะพะฑัะตะดะธะฝัะตั ัะฟะธัะบะธ ะฟะพ ัะพะฒะฟะฐะดะตะฝะธั (list1 & list2), ะฐะฝะฐะปะพะณะธัะฝะพ ะฟะตัะตัะตัะตะฝะธั (list1 * list2)
| (ะปะพะณะธัะตัะบะพะต ะะะ) - ะพะฑัะตะดะธะฝัะตั ัะฟะธัะบะธ ะฟะพ ัะธัะพะบะพะผั ะฟะพะธัะบั (list1 | list2)
ะกะพ ัะฟะธัะบะฐะผะธ ะฝะต ัะฐะฑะพัะฐะตั: ^ && || % /
เบฅเบฒเบเบเบฒเบเบเบตเปเบเบปเบเปเบซเบฑเบเบเบฑเบเปเบปเบ
เบเบฒเบเปเบเบเบฒเบชเบฒเบเบตเปเบชเบฐเปเบเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบญเบปเบเบเบฐเบเบญเบเบเบฑเบเบซเบกเบปเบเบเบตเป Checkmarx เปเบเปเบเปเบฒเบเบปเบ (เบชเบฐเบเบดเบ, เบซเบเปเบฒเบเบตเป, เบซเปเบญเบเบฎเบฝเบ, เบงเบดเบเบตเบเบฒเบ, เปเบฅเบฐเบญเบทเปเบเป). เบเบตเปเปเบกเปเบเบเบฒเบเบเบทเปเบเบเบตเปเบเบญเบเบงเบฑเบเบเบธเบเบตเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเปเปเบเบเบเปเบฒเบ All
. เบเบฑเปเบเปเบกเปเบ, เบเบปเปเบเบซเบฒเบงเบฑเบเบเบธเบเบตเปเบกเบตเบเบทเปเบชเบฐเปเบเบฒเบฐ searchMe
, เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบเบปเปเบโเบซเบฒโ, เบเบปเบโเบเบปเบงโเบขเปเบฒเบโ, เปเบเบโเบเบทเปโเปเบโเบเบปเปเบงโเบงเบฑเบโเบเบธโเบเบฑเบโเบซเบกเบปเบโเบเบตเปโเบเบปเบโเปเบซเบฑเบโ:
// ะขะฐะบะพะน ะทะฐะฟัะพั ะฒัะดะฐัั ะฒัะต ัะปะตะผะตะฝัั
result = All;
// ะขะฐะบะพะน ะทะฐะฟัะพั ะฒัะดะฐัั ะฒัะต ัะปะตะผะตะฝัั, ะฒ ะธะผะตะฝะธ ะบะพัะพััั
ะฟัะธัััััะฒัะตั โsearchMeโ
result = All.FindByName("searchMe");
เปเบเป, เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบปเปเบเบซเบฒเปเบเบเบฒเบชเบฒเบญเบทเปเบ, เบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเบเบฒเบเบขเปเบฒเบเบเปเปเปเบเปเบเบทเบเบฅเบงเบกเปเบเบปเปเบฒเปเบเบเบฒเบเบชเบฐเปเบเบ (เบเบปเบงเบขเปเบฒเบ, groovy เปเบเปเบเบเบเบฒเบ Android), เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบซเบเบฒเบเบเบทเปเบเบเบตเปเบงเบฑเบเบเบธเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบเบเปเบฒเบเบเบปเบงเปเบ:
result = AllMembers.All.FindByName("searchMe");
เบเบฑเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบงเบดเปเบเบฒเบฐ Flow
เบเบฑเบเบเบฑเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบทเบเปเบเปเปเบเบซเบผเบฒเบเบเบปเบเบฅเบฐเบเบฝเบเปเบฅเบฐเบเบตเปเปเบกเปเบเปเบญเบเบฐเบชเบฒเบ cheat เปเบฅเบฑเบเบเปเบญเบเบเบญเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบเบปเบฒเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒ:
// ะะฐะบะธะต ะดะฐะฝะฝัะต second ะฒะปะธััั ะฝะฐ first.
// ะััะณะธะผะธ ัะปะพะฒะฐะผะธ - ะขะ (second) ััะพ ะฒะปะธัะตั ะฝะฐ ะะะะฏ (first).
result = first.DataInfluencedBy(second);
// ะะฐะบะธะต ะดะฐะฝะฝัะต first ะฒะปะธััั ะฝะฐ second.
// ะััะณะธะผะธ ัะปะพะฒะฐะผะธ - ะฏ (first) ะฒะปะธัั ะฝะฐ ะขะ (second).
result = first.DataInfluencingOn(second);
เบเบณเบฅเบฑเบเบฎเบฑเบเบเบทเป/เปเบชเบฑเปเบเบเบฒเบ
เบกเบตเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐเบซเบผเบฒเบเบขเปเบฒเบเบเบตเปเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบปเบเบเบญเบเบเบฒเบเบชเบญเบเบเบฒเบก (เบเบทเปเบเบญเบเปเบเบฅเปเบเบตเปเบเบปเบ, เบชเบฐเบเบดเบ, เปเบฅเบฐเบญเบทเปเบเป), เปเบเปเปเบญเบเบฐเบชเบฒเบเบเปเปเปเบเปเบเบญเบเบงเบดเบเบตเบเบฒเบเปเบเปเบฎเบฑเบเปเบฅเบฐเบเปเบฒเปเบเปเบเบงเบเบกเบฑเบ. เบเบฑเปเบเบเบฑเปเบ, เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเปเบเบปเปเบฒเปเบเบดเบเบเบฑเบเบชเบดเบ LinePragma เปเบฅเบฐเบงเบฑเบเบเบธเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบฐเบเบฑเปเบเบขเบนเปเบเบฒเบเปเบเบกเบฑเบ:
// ะะปั ะฟัะธะผะตัะฐ ะฝะฐะนะดะตะผ ะฒัะต ะผะตัะพะดั
CxList methods = Find_Methods();
// ะ ะผะตัะพะดะฐั
ะฝะฐะนะดะตะผ ะฟะพ ะธะผะตะฝะธ ะผะตัะพะด scope
CxList scope = methods.FindByName("scope");
// ะขะฐะบะธะผ ะพะฑัะฐะทะพะผ ะผะพะถะพ ะฟะพะปััะธัั ะฟััั ะบ ัะฐะนะปั
string current_filename = scope.GetFirstGraph().LinePragma.FileName;
// ะ ะฒะพั ัะฐะบะธะผ - ัััะพะบั, ะณะดะต ะฝะฐัะปะพัั ััะฐะฑะฐััะฒะฐะฝะธะต
int current_line = scope.GetFirstGraph().LinePragma.Line;
// ะญัะธ ะฟะฐัะฐะผะตััั ะผะพะถะฝะพ ะธัะฟะพะปัะทะพะฒะฐัั ะฟะพ ัะฐะทะฝะพะผั
// ะะฐะฟัะธะผะตั ะฟะพะปััะธัั ะฒัะต ะพะฑัะตะบัั ะฒ ัะฐะนะปะต
CxList inFile = All.FindByFileName(current_filename);
// ะะปะธ ะฝะฐะนัะธ ััะพ ะฟัะพะธัั
ะพะดะธั ะฒ ะบะพะฝะบัะตัะฝะพะน ัััะพะบะต
CxList inLine = inFile.FindByPosition(current_line);
เบกเบฑเบเปเบเบฑเบเบกเบนเบเบเปเบฒเบเบตเปเบเบฐเบฎเบฑเบเบชเบฒเบขเบนเปเปเบเปเบเบงเปเบฒ FileName
เบเบปเบงเบเบดเบเปเบฅเปเบงเบกเบตเปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒเปเบเบฅเป, เปเบเบฒเบฐเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเปเบงเบดเบเบตเบเบฒเบ GetFirstGraph
.
เบเบปเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโ
เบกเบตเบเบปเบงเปเบเบเบดเปเบชเบเบเบฒเบเปเบ CxQL result
, เปเบเบดเปเบเบชเบปเปเบเบเบปเบเบกเบฒเบเบฒเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบเบเบญเบเบเปเบฒเบ. เบกเบฑเบเปเบเปเบเบทเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบฑเบเบเบตเปเบฅเบฐเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฝเบเบเบปเบเปเบเปเบฎเบฑเบเบฅเบฐเบเบฑเบเบเบฒเบเบเบฒเบเปเบเบปเปเบฒเปเบเปเบเบกเบฑเบ, เบเปเบฝเบเปเบเบเปเบฅเบฐเบเบฑเบเบเบธเบเบเบงเบเบกเบฑเบเปเบเบเบฐเบเบฐเบเบตเปเบเปเบฒเบเปเบฎเบฑเบเบงเบฝเบ. เปเบเป, เบเปเบฒเบเปเปเบกเบตเบเบฒเบเบกเบญเบเบซเบกเบฒเบเปเบซเปเบเบปเบงเปเบเบเบตเปเบซเบผเบทเบซเบเปเบฒเบเบตเปเบขเบนเปเปเบเบเบปเบเบฅเบฐเบเบฝเบ return
โ เบเบปเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบฐโเปเบเบฑเบโเบชเบนเบโเบชเบฐโเปเบซเบกเบตโเปเบโ.
เบเบฒเบเบชเบญเบเบเบฒเบกเบเปเปเปเบเบเบตเปเบเบฐเบเปเปเบชเบปเปเบเบเบทเบเบญเบฑเบเปเบเบญเบฑเบเปเบถเปเบเปเบซเปเบเบฑเบเบเบงเบเปเบฎเบปเบฒเปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบเบณเปเบเบตเบเบเบฒเบ เปเบฅเบฐเบเบฐเบซเบงเปเบฒเบเปเบเบปเปเบฒเบชเบฐเปเปเบต:
// ะะฐั
ะพะดะธะผ ัะปะตะผะตะฝัั foo
CxList libraries = All.FindByName("foo");
เปเบเป, เปเบเบเปเบเปเบกเบญเบเบซเบกเบฒเบเบเบปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบซเปเบเบฑเบเบเบปเบเปเบเปเบฎเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบ magic, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบซเบฑเบเบงเปเบฒเบเบฒเบเปเบญเบตเปเบเบเบตเปเบเบฑเบเบเบทเบเบกเบฒเบซเบฒเบเบงเบเปเบฎเบปเบฒ:
// ะะฐั
ะพะดะธะผ ัะปะตะผะตะฝัั foo
CxList libraries = All.FindByName("foo");
// ะัะฒะพะดะธะผ, ะบะฐะบ ัะตะทัะปััะฐั ะฒัะฟะพะปะฝะตะฝะธั ะฟัะฐะฒะธะปะฐ
result = libraries
// ะะปะธ ะตัะต ะบะพัะพัะต
result = All.FindByName("foo");
เบเบฒเบเบเปเบฒเปเบเปเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบญเบทเปเบเป
เบเบปเบเบฅเบฐเบเบฝเบเปเบ Checkmarx เบชเบฒเบกเบฒเบเปเบญเบตเปเบเบงเปเบฒเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบเบซเบเปเบฒเบเบตเปเบขเบนเปเปเบเบเบฒเบชเบฒเบเบฒเบเบเบฝเบเปเบเบผเปเบเบผเบกเบเบปเบเบเบฐเบเบด. เปเบกเบทเปเบญเบเบฝเบเบเบปเบเบฅเบฐเบเบฝเบ, เปเบเบปเปเบฒเบญเบฒเบเบเบฐเปเบเปเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบฒเบเบชเบญเบเบเบฒเบกเบญเบทเปเบเป. เบเบปเบงเบขเปเบฒเบ, เบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบญเบเบซเบฒเบงเบดเบเบตเบเบฒเบเปเบเบซเบฒเบเบฑเบเบซเบกเบปเบเปเบเบฅเบฐเบซเบฑเบเบเบธเบเบเบฑเปเบ, เบเบฝเบเปเบเปเปเบเบซเบฒเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเปเบญเบเบเบฒเบ:
// ะะพะปััะฐะตะผ ัะตะทัะปััะฐั ะฒัะฟะพะปะฝะตะฝะธั ะดััะณะพะณะพ ะฟัะฐะฒะธะปะฐ
CxList methods = Find_Methods();
// ะัะตะผ ะฒะฝัััะธ ะผะตัะพะด foo.
// ะัะพัะพะน ะฟะฐัะฐะผะตัั false ะพะทะฝะฐัะฐะตั, ััะพ ะธัะตะผ ะฑะตะท ััะฒััะฒะธัะตะปัะฝะพััะธ ะบ ัะตะณะธัััั
result = methods.FindByShortName("foo", false);
เบงเบดเบเบตเบเบฒเบเบเบตเปเบเปเบงเบเปเบซเปเบเปเบฒเบเปเบฎเบฑเบเปเบซเปเบฅเบฐเบซเบฑเบเบชเบฑเปเบเบฅเบปเบเปเบฅเบฐเบซเบผเบธเบเบเปเบญเบเปเบงเบฅเบฒเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบ.
เบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบฒ
เบเบฒเบเบเบฑเบเปเบกเป
เปเบกเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเบทเปเบญเบเบกเบท, เบเบฒเบเบเบฑเปเบเบกเบฑเบเบเปเปเบเปเปเบชเบฒเบกเบฒเบเบเบฝเบเบเปเบฒเบเบฒเบกเบเบตเปเบเปเบญเบเบเบฒเบเปเบเปเบเบฑเบเบเบตเปเบฅเบฐเบเปเบฒเบเบเปเบญเบเบเบปเบเบฅเบญเบ, เบเบฐเบเบฒเบเบฒเบกเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เบชเปเบฒเบฅเบฑเบเบเปเบฅเบฐเบเบตเบเบฑเปเบเบเปเบฒเบง, เปเบเบทเปเบญเบเบกเบทเบชเบฐเบซเบเบญเบเบเบฒเบเบเบฑเบเปเบกเป, เปเบเบดเปเบเปเบญเบตเปเบเบงเปเบฒเบเบฑเปเบเบเปเปเปเบเบเบตเป:
// ะะฐั
ะพะดะธะผ ััะพ-ัะพ
CxList toLog = All.FindByShortName("log");
// ะคะพัะผะธััะตะผ ัััะพะบั ะธ ะพัะฟัะฐะฒะปัะตะผ ะฒ ะปะพะณ
cxLog.WriteDebugMessage (โnumber of DOM elements =โ + All.Count);
เปเบเปเบกเบฑเบเปเบเบฑเบเบกเบนเบเบเปเบฒเบเบตเปเบเบทเปเปเบงเปเบงเปเบฒเบงเบดเบเบตเบเบฒเบเบเบตเปเบเบฝเบเปเบเปเบเบญเบกเบฎเบฑเบเปเบเบฑเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ เบชเบฒเบ, เบเบฑเปเบเบเบฑเปเบเบกเบฑเบเบเบฐเบเปเปเบชเบฒเบกเบฒเบเบชเบฐเปเบเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบปเบเบเปเบงเบเบเบญเบเบญเบปเบเบเบฐเบเบญเบเบเบตเปเบเบปเบเปเบซเบฑเบเปเบเบฑเบเบเบปเบเบกเบฒเบเบฒเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบญเบดเบ. เบเบฒเบเปเบฅเบทเบญเบเบเบตเบชเบญเบ, เปเบเบดเปเบเบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบ debugging, เปเบกเปเบเบเบฒเบเบกเบญเบเบซเบกเบฒเบเปเบซเปเบเบปเบงเปเบ magic เปเบเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบง result
เบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบฒเบเบชเบญเบเบเบฒเบกเปเบฅเบฐเปเบเบดเปเบเบชเบดเปเบเบเบตเปเปเบเบตเบเบเบถเปเบ. เบงเบดเบเบตเบเบฒเบเบเบตเปเปเบกเปเบเบเปเปเบชเบฐเบเบงเบเบซเบผเบฒเบ; เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบซเปเปเบเปเปเบเบงเปเบฒเบเปเปเบกเบตเบเบฒเบ overrides เบซเบผเบทเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบเบตเปเปเบเบฅเบฐเบซเบฑเบเบซเบผเบฑเบเบเบฒเบ. result
เบซเบผเบทเบเบฝเบเปเบเปเบเบฝเบเบฅเบฐเบซเบฑเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป. เบซเบผเบทเปเบเบปเปเบฒเบชเบฒเบกเบฒเบ, เปเบเบฑเปเบเบเปเบญเบ, เบฅเบทเบกเปเบญเบปเบฒเบเบฒเบเปเบเบเบฑเปเบเบเปเบฒเบงเบญเบญเบเบซเบผเบฒเบเบเบฑเปเบเบเบฒเบเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเบฝเบกเบเปเบญเบกเปเบฅเปเบง เปเบฅเบฐเบชเบปเบเปเบชเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบเบเปเปเบกเบตเบซเบเบฑเบเปเบฎเบฑเบเบงเบฝเบ.
เบงเบดเบเบตเบเบตเปเบชเบฐเบเบงเบเบเบงเปเบฒเปเบกเปเบเบเบฒเบเปเบเบซเบฒเบงเบดเบเบตเบเบฒเบ return
เบเบฑเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบตเปเบเปเบญเบเบเบฒเบ. เปเบโเบเปโเบฅเบฐโเบเบตโเบเบตเป, เบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบญเบโเบฅเบฐโเบเบฝเบโเบเบฒเบโเบเบฐโเบชเบดเปเบโเบชเบธเบโเบฅเบปเบโเปเบฅเบฐโเบเบงเบโเปเบฎเบปเบฒโเบเบฐโเบชเบฒโเบกเบฒเบโเปเบเบดเปเบโเบชเบดเปเบโเบเบตเปโเปเบเบตเบโเบเบถเปเบโเปเบเบฑเบโเบเบปเบโเบเบญเบโเบชเบดเปเบโเบเบตเปโเบเบงเบโเปเบฎเบปเบฒโเปเบเปโเบเบฝเบโเบงเปเบฒ:
// ะะฐั
ะพะดะธะผ ััะพ-ัะพ
CxList toLog = All.FindByShortName("log");
// ะัะฒะพะดะธะผ ัะตะทัะปััะฐั ะฒัะฟะพะปะฝะตะฝะธั
return toLog
//ะัะต, ััะพ ะฝะฐะฟะธัะฐะฝะพ ะดะฐะปััะต ะฝะต ะฑัะดะตั ะฒัะฟะพะปะฝะตะฝะพ
result = All.DataInfluencedBy(toLog)
เบเบฑเบเบซเบฒเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ
เบกเบตเบชเบฐเบเบฒเบเบฐเบเบฒเบเปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเบทเปเบญเบเบกเบท CxAudit (เบเบตเปเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเบฝเบเบเบปเบเบฅเบฐเบเบฝเบ). เบกเบฑเบเบชเบฒเบกเบฒเบเบกเบตเบซเบผเบฒเบเปเบซเบเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเป, เบฅเบงเบกเบเบฑเบเบเบฒเบเบเบฑเบเบเปเบญเบ, เบเบฒเบเบเบฑเบเบเบธเบ Windows เบขเปเบฒเบเบเบฐเบเบฑเบเบซเบฑเบ, BSOD เปเบฅเบฐเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเบเปเปเปเบเปเบเบฒเบเปเบงเปเบญเบทเปเบเปเบเบตเปเปเบเบตเบเบเบฒเบเบเบงเบเบเบธเบกเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเบฒเบเบเบฑเปเบเบกเบตเบเบญเบเบเบฐเบเบธเบกเบเบตเปเบเปเปเบชเปเบฒเปเบฅเบฑเบเปเบเบเบฒเบเบเปเปเบกเบนเบ, เปเบเบดเปเบเบเปเบญเบเบเบฑเบเบเปเปเปเบซเปเบเปเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ. เปเบเบทเปเบญเปเบเปเปเบเบกเบฑเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบเบชเบญเบเบเบฒเบกเบซเบผเบฒเบ:
เบชเปเบฒเบฅเบฑเบ Checkmarx เบเปเบญเบ 8.6:
// ะัะพะฒะตััะตะผ, ััะพ ะตััั ะทะฐะปะพะณะธะฝะตะฝัะต ะฟะพะปัะทะพะฒะฐัะตะปะธ, ะฒัะฟะพะปะฝะธะฒ ะทะฐะฟัะพั ะฒ ะะ
SELECT COUNT(*) FROM [CxDB].[dbo].LoggedinUser WHERE [ClientType] = 6;
// ะัะปะธ ััะพ-ัะพ ะตััั, ะฐ ะฝะฐ ัะฐะผะพะผ ะดะตะปะต ะดะฐะถะต ะตัะปะธ ะธ ะฝะตั, ะฟะพะฟัะพะฑะพะฒะฐัั ะฒัะฟะพะปะฝะธัั ะทะฐะฟัะพั
DELETE FROM [CxDB].[dbo].LoggedinUser WHERE [ClientType] = 6;
เบชเปเบฒเบฅเบฑเบ Checkmarx เบซเบผเบฑเบเบเบฒเบ 8.6:
// ะัะพะฒะตััะตะผ, ััะพ ะตััั ะทะฐะปะพะณะธะฝะตะฝัะต ะฟะพะปัะทะพะฒะฐัะตะปะธ, ะฒัะฟะพะปะฝะธะฒ ะทะฐะฟัะพั ะฒ ะะ
SELECT COUNT(*) FROM LoggedinUser WHERE (ClientType = 'Audit');
// ะัะปะธ ััะพ-ัะพ ะตััั, ะฐ ะฝะฐ ัะฐะผะพะผ ะดะตะปะต ะดะฐะถะต ะตัะปะธ ะธ ะฝะตั, ะฟะพะฟัะพะฑะพะฒะฐัั ะฒัะฟะพะปะฝะธัั ะทะฐะฟัะพั
DELETE FROM [CxDB].[dbo].LoggedinUser WHERE (ClientType = 'Audit');
เบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบเบฝเบ
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบกเบฒเบฎเบญเบเบชเปเบงเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบซเบผเบฒเบเบเบตเปเบชเบธเบ. เปเบกเบทเปเบญเบเปเบฒเบเปเบฅเบตเปเบกเบเบฝเบเบเบปเบเบฅเบฐเบเบฝเบเปเบ CxQL, เบชเบดเปเบเบเบตเปเบเปเบฒเบเบกเบฑเบเบเบฐเบเบฒเบเปเบกเปเบเบเปเปเบกเบตเปเบญเบเบฐเบชเบฒเบเบซเบผเบฒเบเปเบเบฑเบเบเบปเบงเบขเปเบฒเบเบเบตเปเบกเบตเบเบตเบงเบดเบเบเบตเบงเบฒเปเบเบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบฒเบเบฒเบเบขเปเบฒเบเปเบฅเบฐเบญเบฐเบเบดเบเบฒเบเบเบฐเบเบงเบเบเบฒเบเบชเบญเบเบเบฒเบกเปเบเบเบเบปเปเบงเปเบ.
เบเปเบญเบเบเบฐเบเบฐเบเบฒเบเบฒเบกเปเบฎเบฑเบเปเบซเปเบเบตเบงเบดเบเบเปเบฒเบเบเบถเปเบเปเบฅเบฑเบเบเปเบญเบเบชเปเบฒเบฅเบฑเบเบเบนเปเบเบตเปเบเปเบฒเบฅเบฑเบเปเบฅเบตเปเบกเปเบเบปเปเบฒเปเบเปเบเบเบฒเบชเบฒเปเบเบเบชเบญเบเบเบฒเบกเปเบฅเบฐเปเบซเปเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเบงเบเบซเบเบถเปเบเบเบญเบเบเบฒเบเปเบเป Custom Queries เปเบเบทเปเบญเปเบเปเปเบเบเบฑเบเบซเบฒเบเบฒเบเบขเปเบฒเบ. เบเบฒเบเบชเปเบงเบเบเบญเบเบเบงเบเปเบเบปเบฒเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเบปเปเบงเปเบเปเบฅเบฐเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเปเบเบเปเบฅเบดเบชเบฑเบเบเบญเบเบเปเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบเบเปเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบ, เบเบปเบเบญเบทเปเบเปเบกเปเบเบชเบฐเปเบเบฒเบฐเบซเบผเบฒเบ, เปเบเปเบเบงเบเปเบเบปเบฒเบเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบเบเบฒเบเบเปเบฝเบเบฅเบฐเบซเบฑเบเปเบซเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบชเบฐเปเบเบฒเบฐเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเปเบฒเบ.
เบเบฑเปเบเบเบฑเปเบ, เบเบตเปเปเบกเปเบเบเบฑเบเบซเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบปเบเปเบฅเบทเปเบญเบเบเบตเปเบชเบธเบ:
เปเปเบฒ เบงเบฝเบ: เบกเบตเบซเบผเบฒเบ Flows เปเบเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเปเบฅเบฐเบซเบเบถเปเบเปเบเบเบฑเปเบเปเบกเปเบเบฎเบฑเบเบเบญเบเบเบปเบเบญเบทเปเบ, เบเปเบฒเบเบเปเบญเบเบญเบญเบเบเบฒเบเบซเบเบถเปเบเปเบเบเบฑเปเบ.
เบเบฒเบเปเบเปเปเบ: เปเบเปเบเบดเบเปเบฅเปเบง, เบเบฒเบเบเบฑเปเบ Checkmarx เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบฒเบเปเบซเบผเปเบเบปเปเบฒเบเบญเบเบเปเปเบกเบนเบเบเปเบฒเบเบงเบเบซเบเบถเปเบเบเบตเปเบญเบฒเบเบเบฐเบเบฑเบเบเปเบญเบเบเบฑเบเปเบฅเบฐเปเบเบฑเบเบชเบฐเบเบฑเบเบซเบเปเปเบเบญเบเบเบปเบเบญเบทเปเบ. เบกเบตเบงเบดเบเบตเบเบฒเบเบเบดเปเบชเบเบชเปเบฒเบฅเบฑเบเบเปเบฅเบฐเบเบตเบเบฑเปเบเบเปเบฒเบง เบซเบผเบธเบเบเบฐเปเบชเปเบเบเปเบฒ. เบเบถเปเบเบขเบนเปเบเบฑเบเบเบฒเบฅเบฒเบกเบดเปเบเบต, เบกเบฑเบเบเบฐเปเบฅเบทเบญเบ Flow เบเบตเปเบชเบฑเปเบเบเบตเปเบชเบธเบเบซเบผเบทเบเบฒเบงเบเบตเปเบชเบธเบ:
// ะััะฐะฒะธัั ัะพะปัะบะพ ะดะปะธะฝะฝัะต Flow
result = result.ReduceFlow(CxList.ReduceFlowType.ReduceSmallFlow);
// ะััะฐะฒะธัั ัะพะปัะบะพ ะบะพัะพัะบะธะต Flow
result = result.ReduceFlow(CxList.ReduceFlowType.ReduceBigFlow);
เปเปเบฒ เบงเบฝเบ: เบเบฐเบซเบเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเปเปเบกเบนเบเบเบตเปเบฅเบฐเบญเบฝเบเบญเปเบญเบเบเบตเปเปเบเบทเปเบญเบเบกเบทเบเบฐเบเบดเบเบดเบฅเบดเบเบฒ
เบเบฒเบเปเบเปเปเบ: Checkmarx เบกเบตเบเบปเบเบฅเบฐเบเบฝเบเบเบทเปเบเบเบฒเบ, เบเบปเบเปเบเปเบฎเบฑเบเบเบตเปเบเบทเบเบเปเบฒเปเบเปเปเบเบเบเบฒเบเบชเบญเบเบเบฒเบกเบญเบทเปเบเปเบเปเบฒเบเบงเบเบซเบผเบฒเบ. เปเบเบเบเบฒเบเปเบชเบตเบกเบเบฒเบเบเบปเบเบฅเบฐเบเบฝเบเปเบซเบผเบปเปเบฒเบเบตเปเบเปเบงเบเบเปเปเบกเบนเบเบชเบฐเปเบเบฒเบฐเบเบฑเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบญเบเบเปเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบเบธเบเบเบปเบเบเบฒเบเบชเบฐเปเบเบเบเบญเบเบเปเบฒเบเปเบเปเบเบฑเบเบเบต. เบเปเบฒเบเบฅเบธเปเบกเบเบตเปเปเบกเปเบเบเบปเบเบฅเบฐเบเบฝเบเบเบปเบงเบขเปเบฒเบเปเบเบทเปเบญเปเบซเปเบเปเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ:
General_privacy_violation_list
เปเบซเปเปเบเบตเปเบกเบเบปเบงเปเบเบซเบผเบฒเบเบญเบฑเบเบเบตเปเปเบเปเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบทเปเบญเปเบเบฑเบเบเปเปเบกเบนเบเบเบตเปเบฅเบฐเบญเบฝเบเบญเปเบญเบ:
// ะะพะปััะฐะตะผ ัะตะทัะปััะฐั ะฒัะฟะพะปะฝะตะฝะธั ะฑะฐะทะพะฒะพะณะพ ะฟัะฐะฒะธะปะฐ
result = base.General_privacy_violation_list();
// ะัะตะผ ัะปะตะผะตะฝัั, ะบะพัะพััะต ะฟะพะฟะฐะดะฐัั ะฟะพะด ะฟัะพัััะต ัะตะณัะปััะฝัะต ะฒััะฐะถะตะฝะธั. ะะพะถะฝะพ ะดะพะฟะพะปะฝะธัั ั
ะฐัะฐะบัะตัะฝัะผะธ ะดะปั ะฒะฐั ะฟะฐััะตัะฝะฐะผะธ.
CxList personalList = All.FindByShortNames(new List<string> {
"*securityToken*", "*sessionId*"}, false);
// ะะพะฑะฐะฒะปัะตะผ ะบ ะบะพะฝะตัะฝะพะผั ัะตะทัะปััะฐัั
result.Add(personalList);
เปเปเบฒ เบงเบฝเบ: เบเบฐเบซเบเบฒเบเบฅเบฒเบเบเบทเปเบเบปเบงเปเบเบเปเบงเบเบฅเบฐเบซเบฑเบเบเปเบฒเบ
เบเบฒเบเปเบเปเปเบ: เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบเบฐเบเปเบฒเปเบซเปเบเบฑเบเบเบตเปเบญเบปเบฒเปเบเปเบชเปเบเบปเบเบฅเบฐเบเบฝเบเบเบทเปเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบเบปเบเบฅเบฐเบซเบฑเบเบเปเบฒเบเปเบเบฅเบฐเบซเบฑเบเปเบฅเบฐเปเบเบตเปเบกเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบทเปเบเบปเบงเปเบเบเบตเปเบเบทเบเบเปเบฒเปเบเปเบเบปเปเบงเปเบเปเบเบเปเบฅเบดเบชเบฑเบเบเบญเบเบเปเบฒเบ.
password_privacy_violation_list
CxList allStrings = All.FindByType("String");
allStrings.Add(All.FindByType(typeof(StringLiteral)));
allStrings.Add(Find_UnknownReference());
allStrings.Add(All.FindByType(typeof (Declarator)));
allStrings.Add(All.FindByType(typeof (MemberAccess)));
allStrings.Add(All.FindByType(typeof(EnumMemberDecl)));
allStrings.Add(Find_Methods().FindByShortName("get*"));
// ะะพะฟะพะปะฝัะตะผ ะดะตัะพะปัะฝัะน ัะฟะธัะพะบ ะฟะตัะตะผะตะฝะฝัั
List < string > pswdIncludeList = new List<string>{"*password*", "*psw", "psw*", "pwd*", "*pwd", "*authKey*", "pass*", "cipher*", "*cipher", "pass", "adgangskode", "benutzerkennwort", "chiffre", "clave", "codewort", "contrasena", "contrasenya", "geheimcode", "geslo", "heslo", "jelszo", "kennwort", "losenord", "losung", "losungswort", "lozinka", "modpas", "motdepasse", "parol", "parola", "parole", "pasahitza", "pasfhocal", "passe", "passord", "passwort", "pasvorto", "paswoord", "salasana", "schluessel", "schluesselwort", "senha", "sifre", "wachtwoord", "wagwoord", "watchword", "zugangswort", "PAROLACHIAVE", "PAROLA CHIAVE", "PAROLECHIAVI", "PAROLE CHIAVI", "paroladordine", "verschluesselt", "sisma",
"pincode",
"pin"};
List < string > pswdExcludeList = new List<string>{"*pass", "*passable*", "*passage*", "*passenger*", "*passer*", "*passing*", "*passion*", "*passive*", "*passover*", "*passport*", "*passed*", "*compass*", "*bypass*", "pass-through", "passthru", "passthrough", "passbytes", "passcount", "passratio"};
CxList tempResult = allStrings.FindByShortNames(pswdIncludeList, false);
CxList toRemove = tempResult.FindByShortNames(pswdExcludeList, false);
tempResult -= toRemove;
tempResult.Add(allStrings.FindByShortName("pass", false));
foreach (CxList r in tempResult)
{
CSharpGraph g = r.data.GetByIndex(0) as CSharpGraph;
if(g != null && g.ShortName != null && g.ShortName.Length < 50)
{
result.Add(r);
}
}
เปเปเบฒ เบงเบฝเบ: เปเบเบตเปเบกเบเบญเบเบเบตเปเปเบเปเปเบฅเปเบงเบเบตเปเบเปเปเบฎเบญเบเบฎเบฑเบเปเบเบ Checkmarx
เบเบฒเบเปเบเปเปเบ: เบเปเบฒเบเบฒเบกเบเบฑเบเบซเบกเบปเบเปเบ Checkmarx เปเบกเปเบเปเบเปเบเบญเบญเบเบเบฒเบกเบเบฒเบชเบฒ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบฒเบชเบฒ. เบเปเบฒเบเบฅเบธเปเบกเบเบตเปเปเบกเปเบเบเบฒเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฑเปเบเบเปเบฒเบง.
เบเปเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบทเบเปเบเปเบเบตเปเปเบชเบตเบกเบซเบผเบทเบเปเบฝเบเบซเบเปเบฒเบเบตเปเบกเบฒเบเบเบฐเบเบฒเบ, เบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบเบทเบเปเบเบตเปเบกเปเบเบปเปเบฒเปเบเบเบปเบเบฅเบฐเบเบฝเบเบเบทเปเบเบเบฒเบเปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบธเบเบเบปเบเบเบตเปเปเบเปเบกเบฑเบเบเบฑเบเบเบตเบเบฐเบฎเบฝเบเบฎเบนเปเบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบเบฐเบเปเบฒเปเบซเบกเป. เบเบปเบงเบขเปเบฒเบ, เบซเปเบญเบเบชเบฐเบซเบกเบธเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ Android เปเบกเปเบ Timber เปเบฅเบฐ Loggi. เปเบเบเบธเบเบเบทเปเบเบเบฒเบ, เบเปเปเบกเบตเบเบปเบเบฅเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบเบปเบเบเบฒเบเปเบเบเบตเปเบเปเปเปเบกเปเบเบฅเบฐเบเบปเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบฅเบฐเบซเบฑเบเบเปเบฒเบเบซเบผเบทเบเบปเบงเบฅเบฐเบเบธเปเบเบเบเบฑเบเปเบเบปเปเบฒเปเบเปเบเบเบฑเบเบเบถเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบฎเบนเปเบเปเบฝเบงเบเบฑเบเบกเบฑเบ. เปเบซเปเบเบฐเบเบฒเบเบฒเบกเปเบเบตเปเบกเบเปเบฒเบเบดเบเบฒเบกเบเบญเบเบงเบดเบเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเปเบเบเบปเบเบฅเบฐเบเบฝเบ Checkmarx.
เบเบปเบงเบขเปเบฒเบเบฅเบฐเบซเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเบเบตเปเบเปเบฒเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ Timber เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบถเบ:
package com.death.timberdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import timber.log.Timber;
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Timber.e("Error Message");
Timber.d("Debug Message");
Timber.tag("Some Different tag").e("And error message");
}
}
เปเบฅเบฐเบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบเป Checkmarx, เปเบเบดเปเบเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบตเปเบกเบเปเบฒเบเบดเบเบฒเบกเบเบญเบเบเบฒเบเปเบเบซเบฒเบงเบดเบเบตเบเบฒเบ Timber เปเบเบฑเบเบเบธเบเบญเบญเบเบชเปเบฒเบฅเบฑเบเบเปเปเบกเบนเบเบเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ:
FindAndroidOutputs
// ะะพะปััะฐะตะผ ัะตะทัะปััะฐั ะฒัะฟะพะปะฝะตะฝะธั ะฑะฐะทะพะฒะพะณะพ ะฟัะฐะฒะธะปะฐ
result = base.Find_Android_Outputs();
// ะะพะฟะพะปะฝัะตะผ ะฒัะทะพะฒะฐะผะธ, ะบะพัะพััะต ะฟัะธั
ะพะดัั ะธะท ะฑะธะฑะปะธะพัะตะบะธ Timber
CxList timber = All.FindByExactMemberAccess("Timber.*") +
All.FindByShortName("Timber").GetMembersOfTarget();
// ะะพะฑะฐะฒะปัะตะผ ะบ ะบะพะฝะตัะฝะพะผั ัะตะทัะปััะฐัั
result.Add(timber);
เปเบฅเบฐเบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบเปเบเปเบเบฝเบ, เปเบเปเบญเบฑเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเปเบเบเบเบปเบเบเบฑเบเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ Android:
เบเบญเบเบซเบฒAndroidLog_Outputs
// ะะพะปััะฐะตะผ ัะตะทัะปััะฐั ะฒัะฟะพะปะฝะตะฝะธั ะฑะฐะทะพะฒะพะณะพ ะฟัะฐะฒะธะปะฐ
result = base.Find_Android_Log_Outputs();
// ะะพะฟะพะปะฝัะตะผ ะฒัะทะพะฒะฐะผะธ, ะบะพัะพััะต ะฟัะธั
ะพะดัั ะธะท ะฑะธะฑะปะธะพัะตะบะธ Timber
result.Add(
All.FindByExactMemberAccess("Timber.*") +
All.FindByShortName("Timber").GetMembersOfTarget()
);
เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ Android เปเบเป getInputData
:
FindAndroidRead
// ะะพะปััะฐะตะผ ัะตะทัะปััะฐั ะฒัะฟะพะปะฝะตะฝะธั ะฑะฐะทะพะฒะพะณะพ ะฟัะฐะฒะธะปะฐ
result = base.Find_Android_Read();
// ะะพะฟะพะปะฝัะตะผ ะฒัะทะพะฒะพะผ ััะฝะบัะธะธ getInputData, ะบะพัะพัะฐั ะธัะฟะพะปัะทัะตััั ะฒ WorkManager
CxList getInputData = All.FindByShortName("getInputData");
// ะะพะฑะฐะฒะปัะตะผ ะบ ะบะพะฝะตัะฝะพะผั ัะตะทัะปััะฐัั
result.Add(getInputData.GetMembersOfTarget());
เปเปเบฒ เบงเบฝเบ: เบเบณเบฅเบฑเบเบเบญเบเบซเบฒเบเปเปเบกเบนเบเบเบตเปเบฅเบฐเบญเบฝเบเบญเปเบญเบเปเบ plist เบชเบณเบฅเบฑเบเปเบเบเบเบฒเบ iOS
เบเบฒเบเปเบเปเปเบ: iOS เบกเบฑเบเบเบฐเปเบเปเปเบเบฅเปเบเบดเปเบชเบเบเบตเปเบกเบตเบเบฒเบกเบชเบฐเบเบธเบ .plist เปเบเบทเปเบญเบเบฑเบเปเบเบฑเบเบเบปเบงเปเบ เปเบฅเบฐเบเปเบฒเบเปเบฒเบเป. เบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบฅเบฐเบซเบฑเบเบเปเบฒเบ, เปเบเปเบเบฑเบ, เบเบฐเปเบ เปเบฅเบฐเบเปเปเบกเบนเบเบฅเบฐเบญเบฝเบเบญเปเบญเบเบญเบทเปเบเปเบขเบนเปเปเบเปเบเบฅเปเปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบเปเปเปเบเบฐเบเปเบฒ, เบเปเบญเบเบงเปเบฒเปเบเบปเบฒเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเบเบฑเบเบญเบญเบเบเบฒเบเบญเบธเบเบฐเบเบญเบเปเบเบเบเปเปเบกเบตเบเบฑเบเบซเบฒเปเบเป.
เปเบเบฅเป Plist เบกเบตเบเบธเบเบชเบปเบกเบเบฑเบเบเบตเปเบเปเปเบเบฑเบเปเบเบเบเบฑเบเบเบฒเปเบเบปเปเบฒ, เปเบเปเบกเบตเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบเบฑเบ Checkmarx. เปเบซเปเบเบฝเบเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเบฐเบเบปเปเบเบซเบฒเบเปเปเบกเบนเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเปเบฅเบฐเบเบญเบเบเบงเบเปเบฎเบปเบฒเบงเปเบฒเบฅเบฐเบซเบฑเบเบเปเบฒเบเบซเบผเบท tokens เบเบทเบเบเปเบฒเบงเปเบเบดเบเบขเบนเปเบเปเบญเบเปเบเบเปเบญเบเบซเบเบถเปเบ.
เบเบปเบงเบขเปเบฒเบเบเบญเบเปเบเบฅเปเบเบฑเปเบเบเปเบฒเบง, เปเบเบดเปเบเบเบฐเบเบญเบเบกเบต token เบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบทเปเบชเบฒเบเบเบฑเบเบเปเบฅเบดเบเบฒเบ backend:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>DeviceDictionary</key>
<dict>
<key>phone</key>
<string>iPhone 6s</string>
</dict>
<key>privatekey</key>
<string>MIICXAIBAAKBgQCqGKukO1De7zhZj6+</string>
</dict>
</plist>
เปเบฅเบฐเบเบปเบเบฅเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบ Checkmarx, เปเบเบดเปเบเบกเบตเบซเบผเบฒเบ nuances เบเบตเปเบเบงเบเบเบฐเบเบทเบเบเบดเบเบฒเบฅเบฐเบเบฒเปเบเปเบงเบฅเบฒเบเบฝเบ:
// ะัะฟะพะปัะทัะตะผ ัะตะทัะปััะฐั ะฒัะฟะพะปะฝะตะฝะธั ะฟัะฐะฒะธะปะฐ ะฟะพ ะฟะพะธัะบั ัะฐะนะปะพะฒ plist, ััะพะฑั ัะผะตะฝััะธัั ะฒัะตะผั ัะฐะฑะพัั ะฟัะฐะฒะธะปะฐ ะธ
CxList plist = Find_Plist_Elements();
// ะะฝะธัะธะฐะปะธะทะธััะตะผ ะฝะพะฒัั ะฟะตัะตะผะตะฝะฝัั
CxList dictionarySettings = All.NewCxList();
// ะขะตะฟะตัั ะดะพะฑะฐะฒะธะผ ะฟะพะธัะบ ะฒัะตั
ะธะฝัะตัะตััััะธั
ะฝะฐั ะทะฝะฐัะตะฝะธะน. ะ ะดะฐะปัะฝะตะนัะตะผ ะผะพะถะฝะพ ัะฐััะธัััั ััะพั ัะฟะธัะพะบ.
// ะะปั ะฟะพะธัะบะฐ ะทะฝะฐัะตะฝะธะน, ะบะฐะบ ะฝะธ ัััะฐะฝะฝะพ, ะธัะฟะพะปัะทัะตััั FindByMemberAccess - ะฟะพะธัะบ ะพะฑัะฐัะตะฝะธะน ะบ ะผะตัะพะดะฐะผ. ะัะพัะพะน ะฟะฐัะฐะผะตัั ะฒะฝัััะธ ััะฝะบัะธะธ, false, ะพะทะฝะฐัะฐะตั, ััะพ ะฟะพะธัะบ ะฝะตััะฒััะฒะธัะตะปะตะฝ ะบ ัะตะณะธัััั
dictionarySettings.Add(plist.FindByMemberAccess("privatekey", false));
dictionarySettings.Add(plist.FindByMemberAccess("privatetoken", false));
// ะะปั ะบะพััะตะบัะฝะพะณะพ ะฟะพะธัะบะฐ ะธะท-ะทะฐ ะพัะพะฑะตะฝะฝะพััะตะน ััััะบัััั plist - ะฝัะถะฝะพ ะธัะบะฐัั ะฟะพ ัะธะฟั "If statement"
CxList ifStatements = plist.FindByType(typeof(IfStmt));
// ะะพะฑะฐะฒะปัะตะผ ะฒ ัะตะทัะปััะฐั, ะฟะตัะตะด ััะธะผ ะฟะพะปััะธะฒ ัะพะดะธัะตะปััะบะธะน ัะทะตะป - ะดะปั ะฟัะฐะฒะธะปัะฝะพะณะพ ะพัะพะฑัะฐะถะตะฝะธั
result = dictionarySettings.FindByFathers(ifStatements);
เปเปเบฒ เบงเบฝเบ: เบเบญเบเบซเบฒเบเปเปเบกเบนเบเปเบ XML
เบเบฒเบเปเบเปเปเบ: Checkmarx เบกเบตเบซเบเปเบฒเบเบตเปเบชเบฐเบเบงเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ XML เปเบฅเบฐเบเบฒเบเบเบญเบเบซเบฒเบเบธเบเบเปเบฒ, tags, เบเบธเบเบฅเบฑเบเบชเบฐเบเบฐเปเบฅเบฐเบญเบทเปเบเป. เปเบเป, เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบกเบตเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเปเบญเบเบฐเบชเบฒเบเปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบเบตเปเบเปเปเบกเบตเบเบปเบงเบขเปเบฒเบเบเบฝเบงเปเบฎเบฑเบเบงเบฝเบ. เปเบเบดเบเบงเปเบฒเบเบฐเบกเบตเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเปเปเบเบปเบเบเปเบญเบเบเบตเปเปเบเปเบเบทเบเบฅเบปเบเบฅเปเบฒเบเปเบเปเบญเบเบฐเบชเบฒเบเบชเบฐเบเบฑเบเบซเบฅเปเบฒเบชเบธเบ, เบเบปเปเบเบฅเบฐเบกเบฑเบเบฅเบฐเบงเบฑเบเบเปเบฒเบเปเบฒเบเปเบเปเปเบญเบเบฐเบชเบฒเบเบชเบฐเบเบฑเบเบเปเบญเบเบซเบเปเบฒ.
เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบตเปเบเปเปเบเบทเบเบเปเบญเบเบเบฒเบเปเบญเบเบฐเบชเบฒเบ:
// ะะพะด ัะฐะฑะพัะฐัั ะฝะต ะฑัะดะตั
result = All.FindXmlAttributesByNameAndValue("*.app", 8, โidโ, "error- section", false, true);
เปเบเบฑเบเบเบปเบเบกเบฒเบเบฒเบเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบเบฐเบเบดเบเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบฎเบฑเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเป All
เบเปเปเบกเบตเบงเบดเบเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเบง ... เปเบฅเบฐเบเบตเปเปเบกเปเบเบเบงเบฒเบกเบเบดเบ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบตเบเบทเปเบเบเบตเปเบงเบฑเบเบเบธเบเบดเปเบชเบเปเบเบเบเปเบฒเบเบซเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเบซเบเปเบฒเบเบตเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ XML - cxXPath
. เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบฒเบกเบเบตเปเบเบทเบเบเปเบญเบเบเบญเบเบซเบฒเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบ Android เบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเปเบเปเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ HTTP:
// ะัะฐะฒะธะปัะฝัะน ะฒะฐัะธะฐะฝั ั ะธัะฟะพะปัะทะพะฒะฐะฝะธะตะผ cxXPath
result = cxXPath.FindXmlAttributesByNameAndValue("*.xml", 8, "cleartextTrafficPermitted", "true", false, true);
เปเบซเปเปเบเบดเปเบเบกเบฑเบเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบฅเบฑเบเบเปเบญเบ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ syntax เบชเปเบฒเบฅเบฑเบเบซเบเปเบฒเบเบตเปเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบเปเบฒเบเบเบทเบเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบตเปเบเปเบฒเบเปเบเปเบเบดเบเบญเบญเบเบซเบเบถเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเปเบฅเบทเบญเบเบซเบเบถเปเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบ. เบเบฑเปเบเบเบฑเปเบ, เบเบฒเบกเบฅเปเบฒเบเบฑเบเบเบฒเบกเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบ:
-
"*.xml"
- เบซเบเปเบฒเบเบฒเบเบเบญเบเปเบเบฅเปเบเบตเปเบเบฐเบเบญเบเบซเบฒ -
8
โ id เบเบญเบเบเบฒเบชเบฒเบเบตเปเปเบเปเบเบปเบเบฅเบฐเบเบฝเบ -
"cleartextTrafficPermitted"
- เบเบทเปเบเบธเบเบชเบปเบกเบเบฑเบเปเบ xml -
"true"
โ เบเบธเบโเบเปเบฒโเบเบญเบโเบเบธเบโเบชเบปเบกโเบเบฑเบโเบเบตเปโ -
false
โ เบเบฒเบโเบเปเบฒโเปเบเปโเบชเปเบฒโเบเบงเบโเบเบปเบโเบเบฐโเบเบดโเปเบโเปเบงโเบฅเบฒโเบเบตเปโเบเบญเบโเบซเบฒโ -
true
โ เบซเบกเบฒเบโเบเบงเบฒเบกโเบงเปเบฒโเบเบฒเบโเบเบปเปเบโเบซเบฒโเบเบฐโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบฒเบโเบฅเบฐโเปเบฅเบตเบโเบเปโเบฅเบฐโเบเบตโ, เบเบฑเปเบโเปเบกเปเบโ, case-insensitiveโ
เปเบเบฑเบเบเบปเบงเบขเปเบฒเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเปเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบฅเบฐเบเบธเบเปเปเบเบทเบเบเปเบญเบ, เบเบฒเบเบเบธเบเบเบงเบฒเบกเบเบญเบเปเบเบเบญเบเบเบฑเบเบชเบฐเบเบฐ, เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเบทเบญเบเปเบฒเบเปเบ Android เบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบฒเบเบชเบทเปเบชเบฒเบเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบเบเปเบฒเบ HTTP protocol. เบเบปเบงเบขเปเบฒเบเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเบกเบตเบเบธเบเบชเบปเบกเบเบฑเบ cleartextTrafficPermitted
เบเบตเปโเบกเบตโเบเบงเบฒเบกโเบซเบกเบฒเบโ true
:
<network-security-config>
<domain-config>
<domain includeSubdomains="true">example.com</domain>
<trust-anchors>
<certificates src="@raw/my_ca"/>
</trust-anchors>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">secure.example.com</domain>
</domain-config>
</domain-config>
</network-security-config>
เปเปเบฒ เบงเบฝเบ: เบเปเบฒเบเบฑเบเบเบปเบเปเบเปเบฎเบฑเบเปเบเบเบเบทเปเปเบเบฅเป / เปเบชเบฑเปเบเบเบฒเบ
เบเบฒเบเปเบเปเปเบ: เปเบเบซเบเบถเปเบเปเบเปเบเบเบเบฒเบเบเบฐเบซเบเบฒเบเปเบซเบเปเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบกเบทเบเบทเบชเปเบฒเบฅเบฑเบ Android, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบปเบเบเปเปเบเบตเบเบตเปเบเปเปเบเบทเบเบเปเบญเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเปเบฒเบเบปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ obfuscation. เบเบงเบฒเบกเบเบดเบเปเบกเปเบเบงเปเบฒเบเบปเบเบฅเบฐเบเบฝเบเบญเบญเบเบเบฒเบเบเปเบญเบเบเบญเบเบซเบฒเบขเบนเปเปเบเปเบเบฅเป build.gradle
เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเบฎเบฑเบเบเบดเบเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเบเบปเบเบฅเบฐเบเบฝเบ obfuscation เบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฑเบเบเปเบญเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ.
เปเบเปเปเบเปเบเบเบเบฒเบเบเบฐเบซเบเบฒเบเปเบซเบเปเบเบฒเบเบเบฑเปเบเบกเบตเปเบเบฅเปเปเบเบฑเบเบเปเบญเบ build.gradle
, เปเบเบดเปเบเบซเบกเบฒเบเปเบเบดเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบฅเบงเบกเบขเบนเปเปเบเปเบเบเบเบฒเบ. peculiarity เปเบกเปเบเบงเปเบฒเปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบฅเปเปเบซเบผเบปเปเบฒเบเบตเปเบเปเปเปเบเปเบเบตเปเปเบซเปเปเบซเบฑเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบ obfuscation, เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบเปเบญเบเบฐเบชเบฒเบเบเบฐเบเบญเบเบเปเปเปเบกเปเบเบฐเบเบทเบเบเปเบฒเปเบเปเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบฅเบงเบเบฅเบงเบก.
เบเบฑเปเบเบเบฑเปเบ, เบงเบฝเบเบเบฒเบเปเบกเปเบเปเบเบทเปเบญเบเบฑเบ triggers เปเบเปเบเบฅเปเปเบเบฑเบเบเปเบญเบเบเบตเปเปเบเบฑเบเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ. เบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเบเบปเบเปเบเบเบเบฒเบเบกเบตเบชเบฒเบ apply 'com.android.library'
.
เบเบปเบงเบขเปเบฒเบเบฅเบฐเบซเบฑเบเบเบฒเบเปเบเบฅเป build.gradle
, เปเบเบดเปเบเบเปเบฒเบเบปเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบชเปเบฒเบฅเบฑเบ obfuscation:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
...
}
buildTypes {
release {
minifyEnabled true
...
}
}
}
dependencies {
...
}
เบเบปเบงเบขเปเบฒเบเปเบเบฅเป build.gradle
เบชเปเบฒเบฅเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบฅเบงเบกเบขเบนเปเปเบเปเบเบเบเบฒเบเบเบตเปเบเปเปเบกเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเป:
apply plugin: 'android-library'
dependencies {
compile 'com.android.support:support-v4:18.0.+'
}
android {
compileSdkVersion 14
buildToolsVersion '17.0.0'
...
}
เปเบฅเบฐเบเบปเบเบฅเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบ Checkmarx:
ProGuardObfuscation เบเปเปเปเบเป
// ะะพะธัะบ ะผะตัะพะดะฐ release ััะตะดะธ ะฒัะตั
ะผะตัะพะดะพะฒ ะฒ Gradle ัะฐะนะปะฐั
CxList releaseMethod = Find_Gradle_Method("release");
// ะัะต ะพะฑัะตะบัั ะธะท ัะฐะนะปะพะฒ build.gradle
CxList gradleBuildObjects = Find_Gradle_Build_Objects();
// ะะพะธัะบ ัะพะณะพ, ััะพ ะฝะฐั
ะพะดะธััั ะฒะฝัััะธ ะผะตัะพะดะฐ "release" ััะตะดะธ ะฒัะตั
ะพะฑัะตะบัะพะฒ ะธะท ัะฐะนะปะพะฒ build.gradle
CxList methodInvokesUnderRelease = gradleBuildObjects.FindByType(typeof(MethodInvokeExpr)).GetByAncs(releaseMethod);
// ะัะตะผ ะฒะฝัััะธ gradle-ัะฐะนะปะพะฒ ัััะพะบั "com.android.library" - ััะพ ะทะฝะฐัะธั, ััะพ ะดะฐะฝะฝัะน ัะฐะนะป ะพัะฝะพัะธััั ะบ ะฑะธะฑะปะธะพัะตะบะต ะธ ะตะณะพ ะฝะตะพะฑั
ะพะดะธะผะพ ะธัะบะปััะธัั ะธะท ะฟัะฐะฒะธะปะฐ
CxList android_library = gradleBuildObjects.FindByName("com.android.library");
// ะะฝะธัะธะฐะปะธะทะฐัะธั ะฟัััะพะณะพ ะผะฐััะธะฒะฐ
List<string> libraries_path = new List<string> {};
// ะัะพั
ะพะดะธะผ ัะตัะตะท ะฒัะต ะฝะฐะนะดะตะฝะฝัะต "ะดะพัะตัะฝะธะต" ัะฐะนะปั
foreach(CxList library in android_library)
{
// ะะพะปััะฐะตะผ ะฟััั ะบ ะบะฐะถะดะพะผั ัะฐะนะปั
string file_name_library = library.GetFirstGraph().LinePragma.FileName;
// ะะพะฑะฐะฒะปัะตะผ ะตะณะพ ะฒ ะฝะฐั ะผะฐััะธะฒ
libraries_path.Add(file_name_library);
}
// ะัะตะผ ะฒัะต ะฒัะทะพะฒั ะฒะบะปััะตะฝะธั ะพะฑัััะบะฐัะธะธ ะฒ ัะตะปะธะทะฝัั
ะฝะฐัััะพะนะบะฐั
CxList minifyEnabled = methodInvokesUnderRelease.FindByShortName("minifyEnabled");
// ะะพะปััะฐะตะผ ะฟะฐัะฐะผะตััั ััะธั
ะฒัะทะพะฒะพะฒ
CxList minifyValue = gradleBuildObjects.GetParameters(minifyEnabled, 0);
// ะัะตะผ ััะตะดะธ ะฝะธั
ะฒะบะปััะตะฝะฝัะต
CxList minifyValueTrue = minifyValue.FindByShortName("true");
// ะะตะผะฝะพะณะพ ะผะฐะณะธะธ, ะตัะปะธ ะฝะต ะฝะฐัะปะธ ััะฐะฝะดะฐััะฝัะผ ัะฟะพัะพะฑะพะผ :D
if (minifyValueTrue.Count == 0) {
minifyValue = minifyValue.FindByAbstractValue(abstractValue => abstractValue is TrueAbstractValue);
} else {
// ะ ะตัะปะธ ะฒัั-ัะฐะบะธ ะฝะฐัะปะธ, ัะพ ะฟัะตะดัะดััะธะน ัะตะทัะปััะฐั ะธ ะพััะฐะฒะปัะตะผ
minifyValue = minifyValueTrue;
}
// ะัะปะธ ะฝะต ะฝะฐัะปะพัั ัะฐะบะธั
ะผะตัะพะดะพะฒ
if (minifyValue.Count == 0)
{
// ะะปั ะฑะพะปะตะต ะบะพััะตะบัะฝะพะณะพ ะพัะพะฑัะฐะถะตะฝะธั ะผะตััะฐ ััะฐะฑะฐััะฒะฐะฝะธั ะฒ ัะฐะนะปะต ะธัะตะผ ะธะปะธ buildTypes ะธะปะธ android
CxList tempResult = All.NewCxList();
CxList buildTypes = Find_Gradle_Method("buildTypes");
if (buildTypes.Count > 0) {
tempResult = buildTypes;
} else {
tempResult = Find_Gradle_Method("android");
}
// ะะปั ะบะฐะถะดะพะณะพ ะธะท ะฝะฐะนะดะตะฝะฝัั
ะผะตัั ััะฐะฑะฐััะฒะฐะฝะธั ะฟัะพั
ะพะดะธะผ ะธ ะพะฟัะตะดะตะปัะตะผ, ะดะพัะตัะฝะธะน ะธะปะธ ะพัะฝะพะฒะฝะพะน ัะฐะนะปั ัะฑะพัะบะธ
foreach(CxList res in tempResult)
{
// ะะฟัะตะดะตะปัะตะผ, ะฒ ะบะฐะบะพะผ ัะฐะนะปะต ะฑัะป ะฝะฐะนะดะตะฝ buildType ะธะปะธ android ะผะตัะพะดั
string file_name_result = res.GetFirstGraph().LinePragma.FileName;
// ะัะปะธ ัะฐะบะพะณะพ ัะฐะนะปะฐ ะฝะตั ะฒ ะฝะฐัะตะผ ัะฟะธัะบะต "ะดะพัะตัะฝะธั
" ัะฐะนะปะพะฒ - ะทะฝะฐัะธั ััะพ ะพัะฝะพะฒะฝะพะน ัะฐะนะป ะธ ะตะณะพ ะผะพะถะฝะพ ะดะพะฑะฐะฒะธัั ะฒ ัะตะทัะปััะฐั
if (libraries_path.Contains(file_name_result) == false){
result.Add(res);
}
}
}
เบงเบดเบเบตเบเบฒเบเบเบตเปเบชเบฒเบกเบฒเบเบเปเบญเบเบเปเบฒเบเบเบปเปเบงเปเบเปเบฅเบฐเปเบเบฑเบเบเบฐเปเบซเบเบเบเปเปเบเบฝเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ Android, เปเบเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเปเบฅเบฐเบเบตเบญเบทเปเบเปเปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเปเบฒเบเบปเบเบงเปเบฒเบเบปเบเปเบเปเบฎเบฑเบเปเบเบฑเบเบเบญเบเปเบเบฅเปเบชเบฐเปเบเบฒเบฐเปเบเบซเบเบถเปเบ.
เปเปเบฒ เบงเบฝเบ: เปเบเบตเปเบกเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบฒเบเบชเปเบงเบเบเบตเบชเบฒเบกเบเปเบฒ syntax เบเปเปเปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบขเปเบฒเบเปเบเบฑเบกเบเบตเป
เบเบฒเบเปเบเปเปเบ: เบเปเบฒเบเบงเบเบเบญเบเบเบญเบเบเปเบฒเบเปเบเบตเปเปเบเปเปเบเบเบฐเบเบงเบเบเบฒเบเบเบฝเบเบฅเบฐเบซเบฑเบเปเบกเปเบเบเบฝเบเปเบเปเบญเบญเบเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบ. เปเบเปเบเบญเบ, Checkmarx เบเปเปเบชเบฐเปเบซเบกเบตเบฎเบนเปเบเปเบฝเบงเบเบฑเบเบเบฒเบเบกเบตเบขเบนเปเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ, เปเบฅเบฐเบงเบฝเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบเปเบเบทเปเบญเบชเบญเบเบกเบฑเบเปเบซเปเปเบเบปเปเบฒเปเบเบงเปเบฒเบงเบดเบเบตเบเบฒเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเบเบชเบฐเปเบเบฒเบฐเบเบญเบเบเบญเบเบเบตเป. เบเบฒเบเบเบฑเปเบเบเบตเปเปเบกเปเบเบชเบฑเบเบชเบปเบเปเบเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบญเบเปเบเปเบเบทเปเบเบฑเบเบเบฑเบเบเบตเปเบเบปเบเปเบฅเบทเปเบญเบเบซเบผเบฒเบเปเบฅเบฐเบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเบเปเบฒเบเบปเบเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบเบญเบเบเบฒเบเปเบเปเบเบเบชเบฐเปเบเบฒเบฐเบเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบชเบฐเปเบเบฒเบฐ.
เบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเปเบกเปเบเบงเปเบฒ syntax เบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบฑเปเบเบเปเบฒเบงเบเปเปเปเบเปเบเบทเบเบฎเบฑเบเบฎเบนเปเบขเปเบฒเบเบเบทเบเบเปเบญเบเปเบฅเบฐเบเปเบฒเบเบเปเบญเบเบเบปเบเบฅเบญเบเปเบเบทเปเบญเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบเปเบเปเบฎเบฑเบเบเปเบฒเบเบงเบเบเบฐเบซเบเบฒเบเปเบซเบเปเบเบญเบเบเบปเบเบเบงเบเบเบตเปเบเปเปเบเบทเบเบเปเบญเบ. เบกเบตเบซเบผเบฒเบเบเบฒเบเปเบฅเบทเบญเบเปเบเบทเปเบญเบเบฑเบเบเบธเบเบเบงเบฒเบกเบเบทเบเบเปเบญเบเบเบญเบเบเบฒเบเบชเบฐเปเบเบเปเบฅเบฐเปเบเปเปเบเบเบฑเบเบซเบฒ:
-
เบเบฒเบเปเบฅเบทเบญเบเบเปเบฒเบญเบดเบ, เบเบงเบเปเบฎเบปเบฒเบฎเบนเปเปเบเปเบเบญเบเบงเปเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบทเบเบเปเบฒเปเบเปเปเบเปเบเบเบเบฒเบเบชเบฐเปเบเบฒเบฐเปเบเบซเบเบถเปเบเปเบฅเบฐเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบปเบเบฅเบฐเบเบฝเบเปเบเบฅเบฐเบเบฑเบเบเบตเบกเบเบฒเบ. เปเบเปเบเปเบฒเบเบตเบกเบเบฒเบเบเบฑเบเบชเบดเบเปเบเบเบตเปเบเบฐเปเบเปเบงเบดเบเบตเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบผเบทเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบซเบผเบฒเบเบเปเบญเบเบเบตเปเบเบทเปเบเบฑเบเบเบฑเบเบเบฑเบเบเปเบญเบเบเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบฎเบนเบเบเบฒเบเบเบตเปเบเปเปเบซเบเปเบฒเบเปเปเบเบเบญเบเบเบปเบเบเบงเบเบเบตเปเบเปเปเบเบทเบเบเปเบญเบเบเปเบฒเบเบงเบเบซเบฅเบฒเบ.
-
เบเบฒเบโเปเบฅเบทเบญเบโเบเบตเปโเบชเบญเบโเปเบกเปเบโเบเบฒเบโเบเบปเปเบโเบซเบฒโเบชเปเบฒโเบฅเบฑเบโเปเบเบฅโเปโเบเบตเปโเบซเปเบญเบโเบชเบฐโเบซเบกเบธเบโเปเบเปโเบเบทเบโเบเปเบฒโเปเบเบปเปเบฒโเบขเปเบฒเบโเบเบฐโเปเบเปเบโ. เบเปเบงเบเบงเบดเบเบตเบเบฒเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเปเปเบเบงเปเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเปเบกเปเบเบเบทเบเบเปเบฒเปเบเปเบขเปเบฒเบเปเบเปเบเบดเบเปเบเปเบเบฅเปเบเบตเป.
-
เปเบฅเบฐเบเบฒเบเปเบฅเบทเบญเบเบเบตเบชเบฒเบกเปเบกเปเบเบเบฒเบเบเปเบฒเปเบเปเบชเบญเบเบงเบดเบเบตเบเบฒเบเบเปเบฒเบเปเบเบดเบเบเบตเปเบฎเปเบงเบกเบเบฑเบ.
เปเบเบฑเบเบเบปเบงเบขเปเบฒเบ, เปเบซเปเปเบเบดเปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบกเบตเบเบทเปเบชเบฝเบเปเบเบงเบปเบเปเบเบ $
, เปเบเบดเปเบเบเบปเบเปเบเบเบเปเปเบกเบนเบเปเบเบปเปเบฒเปเบเปเบ SQL query เบเบตเปเปเบเปเบเปเบฒเบเบปเบเปเบงเปเบเปเบญเบ. เบเบฑเปเบเปเบกเปเบ, เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, เบกเบฑเบเปเบกเปเบเบเบฒเบเบเบฝเบเบเบฝเบเปเบเบเบเบปเบเบเบญเบเบเปเบฒเบเบฐเปเบซเบผเบเบเบตเปเบเบฐเบเบฝเบกเปเบ Java. เปเบเป, เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบชเปเบฒเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเปเบเบเบชเบญเบเบเบฒเบก SQL, เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเปเบฒเบเบเบทเปเบเบฒเบเบฐเบฅเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบปเบงเบเบฐเบเบดเบเบฑเบเบเบฒเบ. #$
, เปเบเบดเปเบเบเบฐเบเบปเบเปเบเบเบเปเปเบกเบนเบเปเบเบเบเบปเบเปเบเบปเปเบฒเปเบ query (เปเบเบทเบญเบเบเบทเบเบฑเบ string concatenation).
เบฅเบฐเบซเบฑเบเบเบปเบงเบขเปเบฒเบ:
// ะ ะพะฑัะตะผ ัะปััะฐะต - ะทะฝะฐัะตะฝะธั, ะบะพะฝััะพะปะธััะตะผัะต ะฟะพะปัะทะพะฒะฐัะตะปะตะผ
val table = "coffees"
sql"select * from #$table where name = $name".as[Coffee].headOption
Checkmarx เบเบฑเบเบเปเปเบเบฑเบเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบเบงเบเบเบปเบเบเบฒเบเปเบเป Splicing Literal Values โโโโเปเบฅเบฐ skip operators #$
, เบชเบฐเบเบฑเปเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฒเบเบฒเบกเบชเบญเบเบกเบฑเบเปเบเบทเปเบญเบเปเบฒเบเบปเบเบเบฒเบเบชเบฑเบเบขเบฒ SQL เบเบตเปเบกเบตเบเปเบฒเปเบฎเบเปเบฅเบฐเปเบเบฑเปเบเปเบชเปเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเบเบทเบเบเปเบญเบเปเบเบฅเบฐเบซเบฑเบ:
// ะะฐั
ะพะดะธะผ ะฒัะต ะธะผะฟะพััั
CxList imports = All.FindByType(typeof(Import));
// ะัะตะผ ะฟะพ ะธะผะตะฝะธ, ะตััั ะปะธ ะฒ ะธะผะฟะพััะฐั
slick
CxList slick = imports.FindByShortName("slick");
// ะะตะบะพัะพััะน ัะปะฐะณ, ะพะฟัะตะดะตะปัััะธะน, ััะพ ะธะผะฟะพัั ะฑะธะฑะปะธะพัะตะบะธ ะฒ ะบะพะดะต ะฟัะธัััััะฒัะตั
// ะะปั ะฑะพะปะตะต ัะพัะฝะพะณะพ ะพะฟัะตะดะตะปะตะฝะธั - ะผะพะถะฝะพ ะฟัะธะผะตะฝะธัั ะฟะพะดั
ะพะด ั ะธะผะตะฝะตะผ ัะฐะนะปะฐ
bool not_empty_list = false;
foreach (CxList r in slick)
{
// ะัะปะธ ะฒัััะตัะธะปะธ ะธะผะฟะพัั, ััะธัะฐะตะผ, ััะพ slick ะธัะฟะพะปัะทัะตััั
not_empty_list = true;
}
if (not_empty_list) {
// ะัะตะผ ะฒัะทะพะฒั, ะฒ ะบะพัะพััะต ะฟะตัะตะดะฐะตััั SQL-ัััะพะบะฐ
CxList sql = All.FindByShortName("sql");
sql.Add(All.FindByShortName("sqlu"));
// ะะฟัะตะดะตะปัะตะผ ะดะฐะฝะฝัะต, ะบะพัะพััะต ะฟะพะฟะฐะดะฐัั ะฒ ััะธ ะฒัะทะพะฒั
CxList data_sql = All.DataInfluencingOn(sql);
// ะขะฐะบ ะบะฐะบ ัะธะฝัะฐะบะธั ะฝะต ะฟะพะดะดะตัะถะธะฒะฐะตััั, ะผะพะถะฝะพ ะฟัะธะผะตะฝะธัั ะฟะพะดั
ะพะด ั ัะตะณัะปััะฝัะผะธ ะฒััะฐะถะตะฝะธัะผะธ
// RegExp ััะพะธั ะธัะฟะพะปัะทะพะฒะฐัั ะบัะฐะนะฝะต ะพััะพัะพะถะฝะพ ะธ ะฝะต ะฟัะธะผะตะฝััั ะตะณะพ ะฝะฐ ะฑะพะปััะพะผ ะบะพะปะธัะตััะฒะต ะดะฐะฝะฝัั
, ัะฐะบ ะบะฐะบ ััะพ ะผะพะถะตั ัะธะปัะฝะพ ะฟะพะฒะปะธััั ะฝะฐ ะฟัะพะธะทะฒะพะดะธัะตะปัะฝะพััั
CxList find_possible_inj = data_sql.FindByRegex(@"#$", true, true, true);
// ะะทะฑะฐะฒะปัะตะผัั ะพั ะปะธัะฝะธั
ััะฐะฑะฐััะฒะฐะฝะธะน, ะตัะปะธ ะพะฝะธ ะตััั ะธ ะฒัะฒะพะดะธะผ ะฒ ัะตะทัะปััะฐั
result = find_possible_inj.FindByType(typeof(BinaryExpr));
}
เปเปเบฒ เบงเบฝเบ: เบเบญเบเบซเบฒเบเบฑเบเบเบฑเบเบเบตเปเบกเบตเบเบงเบฒเบกเบชเปเบฝเบเบเบตเปเปเบเปเปเบเบซเปเบญเบเบชเบฐเปเบธเบเปเบซเบผเปเบเปเบเบตเบ
เบเบฒเบเปเบเปเปเบ: เบซเบผเบฒเบเปเบเปเบฅเบดเบชเบฑเบเปเบเปเปเบเบทเปเบญเบเบกเบทเบเบงเบเบชเบญเบเปเบซเบผเปเบเปเบเบตเบ (เบเบฒเบเบเบฐเบเบดเบเบฑเบ OSA) เปเบเบทเปเบญเบเบงเบเบซเบฒเบเบฒเบเปเบเปเบซเปเบญเบเบชเบฐเปเบธเบเบชเบฐเบเบฑเบเบเบตเปเบกเบตเบเบงเบฒเบกเบชเปเบฝเบเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบตเปเบเบฑเบเบเบฐเบเบฒเปเบฅเปเบง. เบเบฒเบเบเบฑเปเบเบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบญเบฑเบเปเบเบเบซเปเบญเบเบชเบฐเปเบธเบเบเบฑเปเบเบเปเบฒเบงเปเบซเปเปเบเบฑเบเปเบงเบตเบเบฑเบเบเบตเปเบเบญเบเปเบเปเบเป. เปเบเบเบฒเบเบเปเบฅเบฐเบเบตเบกเบตเบเปเปเบเปเบฒเบเบฑเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบ, เปเบเบเบฒเบเบเปเบฅเบฐเบเบตเบเปเปเบกเบตเบชเบฐเบเบฑเบเบเบตเปเบเบญเบเปเบเบเบฑเบเบซเบกเบปเบ. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ SAST เปเบฅเบฐ OSA เบเบฐเบเปเบงเบเบเปเบฒเบเบปเบเบงเปเบฒเบซเบเปเบฒเบเบตเปเบเปเบฒเปเบเบชเบนเปเบเบฒเบเบเบนเบเบฎเบตเบเบเบญเบเบเปเบญเบเปเบซเบงเปเบเปเปเปเบเปเบเบทเบเบเปเบฒเปเบเปเปเบเบฅเบฐเบซเบฑเบ.
เปเบเปเบเบฒเบเบเบฑเปเบ, เปเบเบเบชเบฐเปเบเบฒเบฐเปเบกเบทเปเบญเบเบดเบเบฒเบฅเบฐเบเบฒ JavaScript, เบเบตเปเบญเบฒเบเบเบฐเบเปเปเปเบเบฑเบเบงเบฝเบเบเบตเปเบซเบเบธเปเบเบเบฒเบ. เบเปเบฒเบเบฅเบธเปเบกเบเบตเปเปเบกเปเบเบเบฒเบเปเบเปเปเบ, เบเบฒเบเบเบตเบญเบฒเบเบเปเปเปเบซเบกเบฒเบฐเบชเบปเบก, เปเบเปเบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบเบฒเบเปเบฎเบฑเบเบงเบฝเบ, เบเบฒเบเบเปเบฒเปเบเปเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบงเบฒเบกเบญเปเบญเบเปเบญเปเบเบญเบปเบเบเบฐเบเบญเบ. lodash
เปเบโเบงเบดโเบเบตโเบเบฒเบโ template
ะธ *set
.
เบเบปเบงเบขเปเบฒเบเบเบฒเบเบเบปเบเบชเบญเบเบฅเบฐเบซเบฑเบเบเบตเปเบกเบตเบเบงเบฒเบกเบชเปเบฝเบเปเบเปเบเบฅเป JS:
/**
* Template example
*/
'use strict';
var _ = require("./node_modules/lodash.js");
// Use the "interpolate" delimiter to create a compiled template.
var compiled = _.template('hello <%= js %>!');
console.log(compiled({ 'js': 'lodash' }));
// => 'hello lodash!'
// Use the internal `print` function in "evaluate" delimiters.
var compiled = _.template('<% print("hello " + js); %>!');
console.log(compiled({ 'js': 'lodash' }));
// => 'hello lodash!'
เปเบฅเบฐเปเบกเบทเปเบญเปเบเบทเปเบญเบกเบเปเปเปเบเบเบเบปเบเปเบ html:
<!DOCTYPE html>
<html>
<head>
<title>Lodash Tutorial</title>
<script src="./node_modules/lodash.js"></script>
<script type="text/javascript">
// Lodash chunking array
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let c1 = _.template('<% print("hello " + js); %>!');
console.log(c1);
let c2 = _.template('<% print("hello " + js); %>!');
console.log(c2);
</script>
</head>
<body></body>
</html>
เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบญเบเบซเบฒเบงเบดเบเบตเบเบฒเบเบเบตเปเบกเบตเบเบงเบฒเบกเบชเปเบฝเบเบเบฑเบเบซเบกเบปเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบเบดเปเบเปเบเปเบฅเบฐเบเบธเปเบงเปเปเบเบเปเบญเบเปเบซเบงเป:
// ะัะตะผ ะฒัะต ัััะพะบะธ: ะฒ ะบะพัะพััั
ะฒัััะตัะฐะตััั ัััะพะบะฐ lodash (ะฟัะตะดะฟะพะปะฐะณะฐะตะผ, ััะพ ััะพ ะพะฑััะฒะปะตะฝะธะต ะธะผะฟะพััะฐ ะฑะธะฑะปะธะพัะตะบะธ
CxList lodash_strings = Find_String_Literal().FindByShortName("*lodash*");
// ะัะตะผ ะฒัะต ะดะฐะฝะฝัะต: ะบะพัะพััะต ะฒะทะฐะธะผะพะดะตะนััะฒััั ั ััะธะผะธ ัััะพะบะฐะผะธ
CxList data_on_lodash = All.InfluencedBy(lodash_strings);
// ะะฐะดะฐะตะผ ัะฟะธัะพะบ ััะทะฒะธะผัั
ะผะตัะพะดะพะฒ
List<string> vulnerable_methods = new List<string> {"template", "*set"};
// ะัะตะผ ะฒัะต ะฝะฐัะธ ััะทะฒะธะผัะต ะผะตัะพะดั, ะบะพัะพััะต ะฟะตัะตัะธัะปะตะฝะฝั ะฒ ััะทะฒะธะผะพัััั
ะธ ะพััะธะปัััะพะฒัะฒะฐะตะผ ะธั
ัะพะปัะบะพ ัะฐะผ, ะณะดะต ะพะฝะธ ะฒัะทัะฒะฐะปะธัั
CxList vulnerableMethods = All.FindByShortNames(vulnerable_methods).FindByType(typeof(MethodInvokeExpr));
//ะะฐั
ะพะดะธะผ ะฒัะต ะดะฐะฝะฝัะต: ะบะพัะพััะต ะฒะทะฐะธะผะพะดะตะนััะฒััั ั ะดะฐะฝะฝัะผะธ ะผะตัะพะดะฐะผะธ
CxList vulnFlow = All.InfluencedBy(vulnerableMethods);
// ะัะปะธ ะตััั ะฟะตัะตัะตัะตะฝะธะต ะฟะพ ััะธะผ ะดะฐะฝะฝัะผ - ะบะปะฐะดะตะผ ะฒ ัะตะทัะปััะฐั
result = vulnFlow * data_on_lodash;
// ะคะพัะผะธััะตะผ ัะฟะธัะพะบ ะฟััะตะน ะฟะพ ะบะพัะพััะผ ะผั ัะถะต ะฟัะพัะปะธ, ััะพะฑั ัะธะปัััะพะฒะฐัั ะฒ ะดะฐะปัะฝะตะนัะตะผ ะดัะฑะปะธ
List<string> lodash_result_path = new List<string> {};
foreach(CxList lodash_result in result)
{
// ะัะตัะตะดะฝะพะน ัะฐะท ะฟะพะปััะฐะตะผ ะฟััะธ ะบ ัะฐะนะปะฐะผ
string file_name = lodash_result.GetFirstGraph().LinePragma.FileName;
lodash_result_path.Add(file_name);
}
// ะะฐะปััะต ะธะดะตั ัะฐััั ะพัะฝะพัััะฐััั ะบ html ัะฐะนะปะฐะผ, ัะฐะบ ะบะฐะบ ะฒ ะฝะธั
ะผั ะฝะต ะผะพะถะตะผ ะฟัะพัะปะตะดะธัั ะพัะบัะดะฐ ะธะผะตะฝะฝะพ ะธะดะตั ะฒัะทะพะฒ
// ะคะพัะผะธััะตะผ ะผะฐััะธะฒ ะฟััะตะน ัะฐะนะปะพะฒ, ััะพะฑั ะฑััั ัะฒะตัะตะฝะฝัะผะธ, ััะพ ััะฐะฑะฐััะฒะฐะฝะธั ััะทะฒะธะผัั
ะผะตัะพะดะพะฒ ะฑัะปะธ ะธะผะตะฝะฝะพ ะฒ ัะตั
ัะฐะนะปะฐั
, ะฒ ะบะพัะพััั
ะพะฑััะฒะปะตะฝ lodash
List<string> lodash_path = new List<string> {};
foreach(CxList string_lodash in lodash_strings)
{
string file_name = string_lodash.GetFirstGraph().LinePragma.FileName;
lodash_path.Add(file_name);
}
// ะะตัะตะฑะธัะฐะตะผ ะฒัะต ััะทะฒะธะผัะต ะผะตัะพะดั ะธ ัะฑะตะถะดะฐะตะผัั, ััะพ ะพะฝะธ ะฒัะทะฒะฐะฝั ะฒ ัะตั
ะถะต ัะฐะนะปะฐั
, ััะพ ะธ ะพะฑััะฒะปะตะฝะธะต/ะฒะบะปััะตะฝะธะต lodash
foreach(CxList method in vulnerableMethods)
{
string file_name_method = method.GetFirstGraph().LinePragma.FileName;
if (lodash_path.Contains(file_name_method) == true && lodash_result_path.Contains(file_name_method) == false){
result.Add(method);
}
}
// ะฃะฑะธัะฐะตะผ ะฒัะต UknownReferences ะธ ะพััะฐะฒะปัะตะผ ัะฐะผัะน "ะดะปะธะฝะฝัะน" ะธะท ะฟััะตะน, ะตัะปะธ ัะฐะบะธะต ะฒัััะตัะฐัััั
result = result.ReduceFlow(CxList.ReduceFlowType.ReduceSmallFlow) - result.FindByType(typeof(UnknownReference));
เปเปเบฒ เบงเบฝเบ: เบเบญเบเบซเบฒเปเบเบขเบฑเปเบเบขเบทเบเบเบตเปเบเบฑเบเบขเบนเปเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ
เบเบฒเบเปเบเปเปเบ: เบกเบฑเบเบเปเปเปเบกเปเบเปเบฅเบทเปเบญเบเปเบเบเบเบตเปเบชเปเบฒเบฅเบฑเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ, เปเบเบเบชเบฐเปเบเบฒเบฐเปเบเบฅเบฐเบชเบฑเบเบกเบทเบเบท, เบเบตเปเบเบฐเปเบเปเปเบเบขเบฑเปเบเบขเบทเบเบซเบผเบทเบเบฐเปเบเปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบดเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเปเบฒเบเปเบซเบผเบทเบเบงเบเบชเบญเบ SSL-Pinning. เบเบฒเบเบเบฑเบเบชเบฐเบเบฐเบเบงเบฒเบกเบเบญเบเปเบ, เบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบชเบดเปเบเบเบฑเปเบเบเปเบฒเบงเปเบงเปเปเบเบฅเบฐเบซเบฑเบเบเปเปเปเบกเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบตเบเบตเปเบชเบธเบ. เปเบซเปเบเบฐเบเบฒเบเบฒเบกเบเบฝเบเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเบฐเบเบปเปเบเบซเบฒเปเบเบฅเปเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเปเบ repository:
// ะะฐะนะดะตะผ ะฒัะต ัะตััะธัะธะบะฐัั ะฟะพ ะผะฐัะบะต ัะฐะนะปะฐ
CxList find_certs = All.FindByShortNames(new List<string> {"*.der", "*.cer", "*.pem", "*.key"}, false);
// ะัะพะฒะตัะธะผ, ะณะดะต ะฒ ะฟัะธะปะพะถะตะฝะธะธ ะพะฝะธ ะธัะฟะพะปัะทััััั
CxList data_used_certs = All.DataInfluencedBy(find_certs);
// ะ ะดะปั ะผะพะฑะธะปัะฝัั
ะฟัะธะปะพะถะตะฝะธะน - ะผะพะถะตะผ ะฟะพะธัะบะฐัั ะผะตัะพะดั, ะณะดะต ะฒัะทัะฒะฐะตััั ััะตะฝะธะต ัะตััะธัะธะบะฐัะพะฒ
// ะะปั ะดััะณะธั
ะฟะปะฐััะพัะผ ะธ ะฟัะธะปะพะถะตะฝะธะน ะผะพะณัั ะฑััั ัะฐะทะปะธัะฝัะต ะผะตัะพะดั
CxList methods = All.FindByMemberAccess("*.getAssets");
// ะะตัะตัะตัะตะฝะธะต ะผะฝะพะถะตััะฒ ะดะฐัั ะฝะฐะผ ัะตะทัะปััะฐั ะฟะพ ะธัะฟะพะปัะทะพะฒะฐะฝะธั ะปะพะบะฐะปัะฝัั
ัะตััะธัะธะบะฐัะพะฒ ะฒ ะฟัะธะปะพะถะตะฝะธะธ
result = methods * data_used_certs;
เปเปเบฒ เบงเบฝเบ: เบเบญเบเบซเบฒ tokens เบเบตเปเบเบทเบเบเปเบฒเบฅเบฒเบเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ
เบเบฒเบเปเบเปเปเบ: เบกเบฑเบเบกเบฑเบเบเบฐเบกเบตเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบเบเบตเปเบเบฐเบเบญเบ tokens เบเบตเปเบเบทเบเบเปเบฒเบฅเบฒเบเบซเบผเบทเบเปเปเบกเบนเบเบเบตเปเบชเปเบฒเบเบฑเบเบญเบทเปเบเปเบเบตเปเบกเบตเบขเบนเปเปเบเบฅเบฐเบซเบฑเบ. เปเบเปเบเบญเบ, เบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบงเบเบกเบฑเบเบขเบนเปเปเบเบฅเบฐเบซเบฑเบเปเบซเบผเปเบเบเปเปเปเบกเปเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบเบต, เปเบเปเบชเบฐเบเบฒเบเบฐเบเบฒเบเปเบเบเบเปเบฒเบเบเบฑเบ. เบเปเบเบญเบเปเบเบเบฑเบเบเบฒเบเบชเบญเบเบเบฒเบก CxQL, เบเบฒเบเบเบญเบเบซเบฒเบชเบดเปเบเบเปเบฒเบเปเปเบเบฑเปเบเบเบตเปเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบ:
// ะะพะปััะฐะตะผ ะฒัะต ัััะพะบะธ, ะบะพัะพััะต ัะพะดะตัะถะฐััั ะฒ ะบะพะดะต
CxList strings = base.Find_Strings();
// ะัะตะผ ััะตะดะธ ะฒัะตั
ัััะพะบ ะฝัะถะฝะพะต ะฝะฐะผ ะทะฝะฐัะตะฝะธะต. ะ ะฟัะธะผะตัะต ัะพะบะตะฝ ะฒ ะฒะธะดะต ัััะพะบะธ "qwerty12345"
result = strings.FindByShortName("qwerty12345");
เบชเบฐเบซเบฅเบธเบ
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบซเบงเบฑเบเบงเปเบฒเบเบปเบเบเบงเบฒเบกเบเบตเปเบเบฐเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบเบเบนเปเบเบตเปเบเปเบฒเบฅเบฑเบเปเบฅเบตเปเบกเบฎเบนเปเบเบฑเบเบเบฑเบเปเบเบทเปเบญเบเบกเบท Checkmarx. เบเบฒเบเบเบตเบเบนเปเบเบตเปเบเบฝเบเบเบปเบเบฅเบฐเบเบฝเบเบเบญเบเบเบปเบเปเบญเบเปเบเบฑเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบเบเปเปเบเบฐเบเบญเบเบซเบฒเบชเบดเปเบเบเบตเปเบกเบตเบเบฐเปเบซเบเบเปเบเบเบนเปเบกเบทเบเบตเป.
เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เปเบเบเบฑเบเบเบธเบเบฑเบเบกเบตเบเบฒเบเบเบฒเบเปเบเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบตเปเปเบเบงเบเบงเบฒเบกเบเบดเบเปเบซเบกเปเบชเบฒเบกเบฒเบเบเบทเบเบฅเบงเบเบฅเบงเบกเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบปเบเบฅเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบ Checkmarx. เบเบฑเปเบเปเบกเปเบเปเบซเบเบเบปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบ
เบเบญเบเปเบเบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเบชเบปเบเปเบเบเบญเบเบเปเบฒเบ!
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com