背景:
在实际的开发中或者在项目中,代码安全的事故数不胜数,发生的阶段不同,造成的影响也不同;
1.在开发阶段发现;
1)一般是由于自己的安全意识不强或当时的技能水平有限,很多情况自以为是,没有深刻理解其内部的具体实现原理而发生;
2)使用或者复用别人的代码,没有识别其中的风险或者安全隐患,想当然的以为这段代码之前的都运行ok,自以为肯定没有问题,没有与自己的实际场景结合起来;
这里说下我的切身体会:
我们的项目在linux环境下有个函数,有内存泄漏风险(打开文件没有关闭),而在另外的逻辑调用这段代码时,它以固定的频率调用,导致程序长时间运行,打开文件数超过系统限制,后面在执行业务逻辑失败,造成程序异常;
所以:在使用别人的代码(不论任何代码都要严格检查,一定要与自己的业务场景结合起来,验证别人的这段代码在自己的项目中能否满足自己的需要,而且有没有问题)。
2.在别人检查出来,或者被代码检视工具扫描出来;
这个就不用说了,这被别人查出来了,如果的确复杂或者很难发现这个可以理解,如果是简单的,这别人的印象如何,这就不用说了,自行脑补吧...
3.在项目交付侧或者在用户现场发现;
这个我认为对公司的品牌名声名气、商业价值,经济价值等都与很大的影响,就是那句话:你好,世界同你一同美好,你不好,世界会抛弃你,只因为你是你,你不是全世界。
========================================================================================================================================================
上面说了那么些,那怎么才能有效的规避,或者降低错误发生的频率,下面这些方法步骤为我们提供了指路明灯:
1.数据验证;
这验证了没验证,自测充不充分,自己对得起自己的良心就行;
2.警告即错误;
这个要求严格的公司,上库代码是不能有告警的,假设解决不了的也是需要做遗留评审的;
3.遵守编程规范;
每个公司都有自己的编码规范,需严格遵循,毕竟无规矩不成方圆,写的代码的前提是别人能看懂,如果一个人写的代码,可读性很差,我想如果有脾气的,那内心一定是一万只"草泥马"早已奔腾不已;
4.边界检查
越到边界越可能出错,就和国境线一样,你在自己的国家有祖国的庇护,如果出了国境线,而且是非法的,那后果就不言而喻了;
5.零信任
在有根据的情况下,坚信自己,勇于验证,怀疑别人,但这要有前提...
6.使用安全函数
这就不用说了,就拿字符串操作来说吧,_s 你懂得;
7.使用安全检测工具
工具可以提高检查效率和质量,这个自行百度吧;
8.打开安全编译选项
用过的人都说好,自从用了它,妈妈说我学习成绩一下提高了,一口气上六楼也不喘了;
9.代码review
项目侧定期举行吧;