这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描

协变苔藓
• 阅读 1186

代码扫描在当代企业,离不开软件技术。软件是工程师编写的,难免可能存在质量或安全问题,这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机。为了将风险降至最低,建议在编码过程中启用一系列的自动化扫描服务-代码扫描,尽早的发现问题,将风险扼杀在摇篮中。
1 、用户的诉求或问题
•编码不规范:开发者专业度有限,特别是依赖外包团队的情况,业务代码通常没有通过细致的设计,也很难保证兼容性和扩展性,存在隐藏的缺陷和故障风险;
•敏感数据泄露:开发者缺乏安全意识,企业的敏感信息直接编写到代码中,可能造成敏感信息的外流,进而使得不法分子有机可乘,造成企业损失;
•依赖项存在安全漏洞:代码中免不了引入二方或三方的依赖包,特别是引入开源依赖包的场景下,很可能自身代码保护周全,但是依赖的代码存在安全漏洞,使得不法分子可以通过这些漏洞发起攻击;
•代码优化:开发者编写了代码,期望能够得到专业的代码优化建议;
2、代码扫描启用服务
云效代码管理内置了多种扫描服务,为了保证每次提交都能及时的获取扫描结果,建议在创建代码库后,立即前往代码库「设置」-「集成与服务」开启自动化扫描服务。这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描

点击期望开启服务右侧的开关,确认授权后服务成功启用。这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描

启用时可以选择触发方式:提交触发或合并请求触发,部分服务仅支持一种触发方式。
「提交触发」在每次提交后,将自动触发相关分支的全量扫描,即扫描分支下的所有内容;
「合并请求触发」在创建或更新合并请求后,将自动触发源/目标分支的增量扫描,即扫描源/目标分支变更的内容(Diff);
如不再使用扫描服务,点击服务右侧开关关闭即可。
接下来依次介绍上诉四种扫描服务。
代码质量——Java 开发规约
《阿里巴巴 Java 开发手册》是阿里内部 Java 工程师所遵循的开发规范,涵盖编程规约、单元测试规约、异常日志规约、MySQL 规约、工程规约、安全规约等,这是近万名阿里 Java 技术精英的经验总结,并经历了多次大规模一线实战检验及完善。根据约束力强弱,规约依次分为强制、推荐、参考三大类:
【强制】必须遵守。是不得不遵守的约定,违反本约定或将引起严重的后果。
【推荐】尽量遵守。长期遵守这样的规则,有助于系统稳定性和合作效率的提示。
【参考】充分理解。技术意识的引导,是个人学习、团队沟通、项目合作的方向。
Java 代码规约扫描使用《阿里巴巴 Java 开发规约》插件扫描 Java 规约问题。
代码质量——代码补丁智能推荐
缺陷检测和补丁推荐几十年来一直是软件工程领域的难题,又是研究者和一线开发者最为关心的问题之一,这里讲的缺陷不是网络漏洞、系统缺陷,而是隐藏在代码中的缺陷。帮助开发者识别这些缺陷,并进行修复,能够大幅提升软件质量。
基于业界和学术界较为流行的缺陷检测手段,并分析和规避其局限性,云效代码管理的算法工程师们提出了一种新的算法,实现更加精准和高效的分析代码缺陷并推荐优化方案,该算法已被国际软件工程大会(ICSE)收录。
代码补丁推荐服务目前应用于合并请求的代码自动扫描场景,扫描输出优化推荐方案,问题等级仅包含 MAJOR 类型:建议修复的代码缺陷。
代码安全——敏感信息检测
敏感信息检测功能,可以检测代码库中的敏感凭证和密钥,比如 API keys 等信息。集成在合并请求代码评审阶段,可以有效防止敏感信息意外提交。
敏感信息问题等级分为:BLOCKER, CRITICAL, MAJOR
BLOCKER: 通过规则扫描出来的可能性很高的明文问题;
CRITICAL: 通过信息熵模型得出的可能性较高的潜在问题;
MAJOR: 用于测试的敏感信息字段;
代码安全——依赖包漏洞检测
为了杜绝安全隐患,企业需要做到以下三点:
1.了解工程都使用了哪些依赖包;
2.删除不需要的依赖包;
3.检测并修复当前依赖的已知漏洞;
依赖包漏洞检测服务帮助企业方便的检查其工程依赖包的安全性。
依赖包漏洞等级分为:BLOCKER, CRITICAL, MAJOR,等级划分根据国家漏洞数据库CVSS分数评估制定。
BLOCKER: 高危漏洞,建议立即修复;
CRITICAL: 中危漏洞,建议尽快修复;
MAJOR: 低危漏洞;
3、提交代码执行检测

为了保证代码问题不被引入生产环境,越早进行检查,引入的风险越小。因此,建议能够在每次提交时都进行代码检测,从起点发现并扼杀问题,保障后续应用研发流程的稳定性。
开启检测服务时,勾选触发方式的「代码提交触发扫描」,如图①:这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描

此后库内的每次提交都会自动执行对应的自动化检测,检测当前新提交的所有文件,可在源文件或提交页面查看检测结果:这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描
这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描

可点击检测服务展开问题详情查看,Blocker 级别的问题建议立即解决,这类问题容易引起故障或安全漏洞:这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描
4、合并请求执行检测
开启检测服务时,勾选触发方式的「合并请求触发扫描」,如图②:这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描
此后库内的每次创建合并请求或合并请求源分支有新提交,都会针对变更文件自动执行对应的自动化检测,保证新增期望合并至目标分支的代码质量和安全。
可在合并请求列表和详情页面查看检测结果:这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描
点击合并请求详情的检测结果详情,可以跳转代码行内查看具体问题代码:这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描
5、安全检测
针对安全类问题,通常需要统计或追溯历史,因此云效代码库中提供了专门的安全模块,用于承载检测出的全部问题,并记录了已解决的历史数据。
若未开启过安全类检测服务,可以通过安全模块前往代码库设置-「集成与服务」中开启。这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描
开启后,可以在当前页查看各分支检测出的安全问题:这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描
同样,可点击问题名称查看详情和推荐的解决方案:这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描
TIPS:针对敏感信息检测,若部分文件希望跳过扫描,可以使用文件白名单的功能,白名单内的文件将不被检测:这些问题可能在生产环境中引发严重的故障,直接造成企业的经济损失和信任危机-代码扫描
总结
使用代码扫描将测试左移,对每次提交和合并进行自动化检测,保证存量和新增代码的质量和安全,能够有效的提升研发效率,助力企业更好的实现业务价值,代码扫描,尽早的发现问题,将风险扼杀在摇篮中。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
新支点小玉 新支点小玉
1年前
CNAS中兴新支点——源代码审计对企业有哪些好处
源代码扫描,对应用程序进行静态漏洞扫描,分析源代码中存在的安全风险,运行应用于模拟器中对应用进行实时漏洞攻击检测。你是否了解源代码扫描对企业的好处?一、源代码扫描,通常能够帮助企业解决这些问题:1、软件代码中安全漏洞和未声明功能的存在是信息安全事件频繁发生
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究