软件公司的安全建设
最近公司同事做了件离谱的事,把给客户公司写的软件源代码放到GitHub上开源了。
要说光是软件源代码,对这件事儿说也不算太大,因为是他自己负责的一个小项目,本身也没太大的商业价值,只能说公司的项目随便开源了,一个招呼都不打,意识不行吧。
最大的问题是,里面他硬编码了密码到配置文件里,配置文件也给上传了,客户最近几天在做PT,一下窟窿就捅大了。
现在客户让我拿出来解决方案,以及保障后续不会出现类似情况。
我想了想,这件事儿的问题应该包括以下几个方面:
git 的代码管理培训
公司有代码管理规范和自建gitlab,感觉这个同事并不清楚怎么使用。还有其他同事写了代码,没有提交git,导致代码丢失。需要加强git和代码管理的培训。
安全意识
首先,密码硬编码到配置文件中,就不是很靠谱,但是很多人都这么干,这个需要建立机制,比如代码审查,或者代码扫描,用于前期发现,代码加密,或者代码混淆等手段用于实际项目。
其次,把密码传到GitHub上,凸显安全意识淡薄。需要加强培训。
工具建立
员工出错在所难免,我们并没有及时发现,也属于管理责任。需要建立工具库,提早发现员工把公司相关项目传到GitHub或者Gitee等其他平台上。
入侵问题
除了本次的问题,公司也出现过员工写的代码或者采用的框架不够安全,导致被入侵。
基于上面的问题,需要统一建立安全体系,囊括考虑。
具体的措施应该有:
git 相关
- 规划git的项目和仓库,建立Rinsys的git仓库使用规范
- 比如product 还是个人项目,
- 项目名称标准 必须是客户简称+项目简称
- 比如项目必须开库管理代码,不能因为项目太小不开库
- 比如git的readme标准
- 不更新维护的项目及时归档
- 比如product 还是个人项目,
- 培训git和gitlab基本操作,细致到包括最基本的操作。
- 比如创建项目、上传代码、branch 、merge 等
- git高级操作,比如stash
- git管理操作,比如仓库权限等
- CI ?
- 公司代码不经同意,不能私自上传其他平台,比如GitHub,Gitee等,更不可随意开源公司代码。
项目中的安全意识
- 所有来自用户端的数据必须进行过滤,比如sql注入,xss等
- 加密相关问题
- 项目可以使用SSO的,必须使用SSO登录。
- 数字签名,api调用必须使用数字签名,比如使用JWT,防止数据被篡改。
- 项目中所有的密码存储,没有解密需求的(一般为用户密码),必须使用不可逆加密,比如md5+salt,sha256等。
- 有解密需求的,使用非对称加密,比如RSA等。私钥必须严格保管,不可泄露。不可直接直接存储到项目中,需要使用环境变量或者CI工具挂载。
安全工具制作
- 寻找、制作扫描、爬虫工具,监控员工是否私自上传公司代码
运维安全
- 公司的服务器权限是否符合最小权限原则
- 公司的服务器操作系统是否定期更新
- 公司服务器目录能否定期进行安全扫描
- 公司服务器和业务系统是否定期进行安全漏洞扫描
- 公司的服务系统(Git、邮箱、企业微信、qtools等)的用户权限是否符合最小权限原则
- 员工的代码是否有安全性和健壮性扫描
评论
评论插件加载失败
正在加载评论插件