你好,我是一笑(Maksim),接下来我们要来聊一聊如何在业务中如何开发出“安全”的代码。
首先来讲一讲为什么会写关于安全的文章,最近真的是被安全团队搞的晕头转向,在老代码中存在大量的安全问题,不断的修修补补,起初感觉有些烦躁,感觉有些接口没有必要这么严格,直到我被“安利”了一款应用,由于涉敏就不在文章中详细说明了。
我来简单说一下那个应用的功能,通过输入手机号或者邮箱,可以将个人信息完整的查询出来,很恐怖,网络之上的确没有秘密,当我自己的信息被查出来之后,我是真的慌了,其中包括了我的身份证号、曾经的住址,用过的邮箱,甚至我怀疑,我开过几次房都能查到。
那这些信息都是怎么被泄露出去的呢?
让我们来看看曾经的新闻:
- 2013年的时候,腾讯爆出被黑客盗取了大量的用户资料,其中包括7000多万个QQ群,12亿多个部分重复的QQ号码。
- 2015年10月19日下午消息,乌云今日宣布发现新漏洞,此漏洞将导致 网易 163/126邮箱过亿数据泄漏,泄露信息包括用户名、密码、密码保护信息、登录IP以及用户生日等多个原始信息,影响数量总共近5亿条!
- 酒店数据库被“黑” 3.27亿人次信息泄露
这些都是我们熟知的互联网公司或者产品,与此同时网上的开源产品,ecshop,discuzz, dedecms 曾经都存在大量的漏洞,如果站长不具备安全意识,没有及时的修复漏洞,那么我们的信息将会更容易被获取。
同时这样的问题还会影响品牌的声誉,会给品牌带来不可估量的损失,我很认同何为舟老师在极客时间《安全攻防技能 30 讲》中的一句话:我们在追求开发效率的同时,一定要把“安全”这俩字放在心上。
就在2021 年,北京组织各大公司进行攻防演练,APP 等系统必须进行等保测试,这都意味着未来国家对信息安全将会越来越重视,而变成安全将是每一位程序员的必修课。
在公司内部,基本上所有上规模的公司都会有自己的安全审计部门,而我这段时间也正在被审计部门折磨着,历史遗留的系统有大量的系统,在扫描到我们事业部的时候,让我真的是苦不堪言,一天最多能给出八九个工单。
下面,我通过自己的亲身经历,以及对我司安全规范、《安全攻防技能 30 讲》,《PHP 安全之道》进行整理,剥丝抽茧,将各种安全手段和需要注意的地方,进行逐一讲解,下面是大纲:
接下里,说一下这个系列文章的整体结构其中涉及如下:
- 输入验证
- 输出编码
- 身份验证
- 短信验证码
- 图灵验证码
- 密码管理
- 回话安全
- 访问控制
- 注入攻击
- 敏感信息
- CSRF 攻击
- 文件上传安全
- 接口安全
- I/O 操作
- 运行环境
- 异常处理
- 日志规范
做到上面这些,代码就已经算是相对安全了,但是只要代码是在不断产出,就会出现新的漏洞,我也会通过自己的学习和实践,不断去补充这个系列的文章。
参考资料
[1] 何为舟 《安全攻防技能 30 讲》安全攻防技能30讲_安全_漏洞_黑客-极客时间 (geekbang.org)
[2] 王昊天 Web安全攻防实战 https://time.geekbang.org/course/intro/100055001
[3] 栾涛 《PHP 安全之道》人民邮电出版社