CheckMarx中文网站 > 新手入门 > Checkmarx预设规则集怎么选择 Checkmarx预设规则集和项目语言怎么匹配
教程中心分类
Checkmarx预设规则集怎么选择 Checkmarx预设规则集和项目语言怎么匹配
发布时间:2026/06/29 18:21:26

  在Checkmarx里面,预设规则集要怎么选,还有这套规则集跟项目语言又要怎么匹配,不能光想着“规则越多就一定越安全”。预设规则集这东西,说到底,就是一整套查询规则,它的作用是在跑SAST的时候,决定到底要重点去查哪些漏洞类型、哪些风险级别,还有哪些跟语言挂钩的规则。Checkmarx One的文档里面也讲过,Presets就是一组可以让你去选的查询规则,SAST扫描必须选定一个预设规则集,要是你没去挑,它就会自己用上那套默认的。

  一、Checkmarx预设规则集怎么选择

 

  动手选预设规则集之前,得先想明白这回扫描到底是什么目的。是新项目刚接进来,还是在理那一大摊子老代码,是要搞安全加固,还是上线前做审计,这些不同情况对规则集的要求,那是完全不一样的。规则集要是设得太宽,告警就会冒出来很多,误报也容易跟着往上跑;可要是设得太窄,又很可能会把真正要紧的风险给漏掉。

 

  1、先看项目正处在哪个阶段

 

  进到Preset Management里头挑规则集的时候,能先把项目是头一回接进来、还是日常CI跑着、又或者是发布前做安全审计,给分分清楚。头一回接进来,不建议一上来就把所有问题都给拦住,可以先用一套覆盖面比较全的规则集,跑出一个基线来,然后再去分类处理。日常CI用的时候,就更适合挑那些已经跑稳了的、误报比较低的、跟项目风险对得上号的规则集。

 

  2、按风险等级去压一压噪声

 

  要是项目里面,老早攒下来的历史代码比较多,那就建议先把眼光搁在High、Medium这些对安全结果影响更大的规则上面,至于低风险跟风格类的问题,可以放到后面再分批次去收拾。Checkmarx扫描,它可不是为了让报告看着满满当当挺唬人的,是要让团队能真刀真枪地去把问题修掉。要是刚一开始告警就铺天盖地,开发的人就很容易光去盯着数量看,反倒把那些真正危险的发现项给晾在一边了。

 

  3、别一上来就动手去改默认规则

 

  预设规则集,它确实能让你自己去定制,但不建议刚上手就大把大把地去删规则。一个比较把稳的做法,是先让它跑上一遍扫描,看看到底哪些规则对你这个项目是真有东西可挖的,哪些又是误报一大堆或者暂时不合适的,然后再去用偏差、排除范围,或者自己定制的预设来处理它们。自己定制出来的规则集,要记得把说明给留下来,免得后面接手的人,搞不明白为什么有些风险,当初就没被扫到。

 

  二、Checkmarx预设规则集和项目语言怎么匹配

 

  规则集跟项目语言对上号,这是影响扫描准头的一个顶要紧的关节。Checkmarx的查询规则,本身就是按语言来码的,在查询那个列表里面,也是照着编程语言,把对应的查询树给亮出来的。要是语言没给认对,再或者规则集压根就没把你那些主要语言给盖住,那扫出来的结果,它就是不完整的。

  1、先把你用的主要语言给敲死

 

  项目要接进来以前,得先把自己到底用的是什么主语言给敲死,比方说Java、C#、JavaScript、TypeScript、Python、C/C++这些。Checkmarx官方那边,有一个讲它支持哪些语言跟框架的页面,里头不光会列出SAST撑得住的语言、框架,还有文件的扩展名,也会给出来跟预设沾边的查询列表能下载。那种一个项目里塞了好几种语言的,可不能光按一个语言去配,比如前后端凑在一块儿的项目,后端的Java跟前端的JavaScript,都得给兜进扫描的那个范围里头去。

 

  2、完了以后再看一眼框架跟文件类型

 

  一样是Java的项目,你用的是普普通通的J2SE,还是Spring,还是JSP,又或者是MyBatis、Hibernate,里头蹲着的风险点,它压根儿就不一样;一样的道理,一样是前端的项目,纯的JavaScript,跟那种里头掺了模板、掺了HTML、掺了服务端渲染的,它也不是一码事。选规则集那会儿,要叫你扫出来的东西,能把实实在在你正在使的那些个框架跟文件类型,都给包在里头,要不然,就容易闹出那种,代码倒是给你扫了,可关键的风险,偏偏就没被哪条规矩给打着的情况。

 

  3、扫完以后去查一查,结果里头的语言分布

 

  等扫描跑完了,是要去瞅一眼,结果里面认出来的语言、文件个数,还有漏洞是咋分布的,看它合不合理。要是你的项目里头,明摆着有一大堆前端的代码,可是结果里面,差不多就没瞅见几条跟那门语言搭边的发现项,那你就得去翻翻文件的扩展名、排除规则、源码搁的路径,还有构建包里头到底装了些什么。可不能光拿眼睛扫一下扫描跑没跑完,语言认没认对,也一样是要紧的事情。

 

  三、规则集匹配后怎么持续优化

 

  规则集可不是你选过一回,往后就能躺在那里管一辈子的。项目里头的代码、框架的版本、对风险的那套要求,还有合规上的那些条条框框,它全是会变的,预设规则集,也得隔上一阵子就拿出来再审一审。特别是接进CI以后,你要是那规则还一直放得那么宽,那流水线就要给噪声拖得跑不动了;可你要是把规则收得太紧,那安全门禁它又成了个摆设。

 

  1、先把扫描的基线给立起来

 

  头一回接进来的时候,能顺手就把扫描基线给留下,把那套规则集叫个啥名、工具是哪个版本、语言划了多大的圈、哪些东西给排除在外头了,还有头一趟扫出来多少告警,全给记下来。这么一来,往后再去动规则的时候,你才能闹明白,那告警数到底是新加进来的代码给带进来的,还是因为规则集自己变了才多出来的。

 

  2、照着误报的那些情况,去动手调整

 

  要是有些规则,它老是、老是给你往外蹦误报,那你就得先去琢磨琢磨,这根子到底出在哪儿。它可能是你那个框架给包得有点各色,也可能是你们项目里头自己写的那些过滤用的函数,人家压根就没认出来。Checkmarx也是撑得住让你去靠着查来查去的那些能力,把扫描的准头往上提的,官方介绍里头也提过,能叫你针对自己那摊子特别的需求,去把那查询跟预设给调上一调。

 

  3、去跟门禁的那套法子,打好配合

 

  规则集你挑成什么样,是要去跟CI那边的门禁,搁在一块儿来使的。日常交上来的东西,能先只把高危的,还有那些新冒出来的问题给截住,那些风险不咋高的,就叫它先进到那等着收拾的清单里头去;等到了版本要往外头发以前,再把你那扫描的圈子给放大一些,去查查是不是还有那些撂在那里没动的、高危的老窟窿。

  总结

 

  说到底,Checkmarx预设规则集怎么去选,还有怎么跟项目的语言对上号,这里头的那个顶要紧的东西,是要照着项目的那门语言、那套框架、风险的等次,还有眼下正处在哪个扫描的阶段,去一样一样地给它配好了。挑那套规矩的时候,可不能光是一门心思地去追那个越多越好的数儿,得保着这扫出来的果子,是你手下那帮子人,能真真地吃得下去、消得了化的;在给它跟语言配对儿的时候,也非得去把源码、那些个文件的类型,还有你正在使唤的架子,都给弄得清清楚楚的,看它们是不是真真儿地,叫人家给认对了才成。等到了后头,再靠着那一开始的基线、对着误报去一样一样地瞅、还有跟那门禁的套路打配合,这么一路给捯饬下来,那Checkmarx扫出来的东西,它才能慢慢儿地,变得更把稳,也更对得上你那条真刀真枪在那儿跑着的,研发的趟子。

135 2431 0251