最近总是在做总结,文章也比以前更新的勤了。回成都后生活很安逸,平时容易被忽略的很多事情现在都看的特别清晰,每天必须得学点东西才睡得着。前几天写了 程序员如何写好技术文档 ,发现相比代码类的文章这种总结类的文章更受欢迎,今天正好有机会说说Web安全方面的事情。
一. 意外之财
一个月前我正在写某个业务需要调用阿里的接口。在看接口文档时,感觉有个接口有安全漏洞,然后写了个简单的脚本验证了想法。在确认漏洞之后,马上将漏洞提交到了”阿里应急响应中心”,做完这些事花了不到20分钟,一气呵成。晚上回家还给女朋友吹嘘自己理论知识过硬,帮阿里发现了一个核心业务的漏洞,当了回雷锋!女朋友一脸崇拜(虽然她完全听不懂),之后也把这事给忘了。
过了有半个多月,有个人加我QQ,问我是不是白帽子,想多交流。我才想起登录到应急响应中心查看,看到提交的漏洞定级为『高危漏洞』,直接奖励¥2400。这个钱来的如此轻松,我都想转行做白帽子了。这件事情从另外一面说明了安全的重要性,如果用金钱去衡量的话,很多程序员每天都在亏钱。
二. 安全习惯的养成
在猫厂的时候,我『沟通』最多的就是安全部门的同学。代码上线需要安全审核,每天有安全扫描,甚至一个项目一个项目的验证接口(这点我相当佩服),定期的安全培训。加上很好的技术氛围,谁负责的项目被报出漏洞会觉得特别丢脸,像XSS、CSRF这种低级别的漏洞还要请全组的人吃鸡翅……
当时我手上有维护一个Wordpress项目,这个大家伙就像一个定时炸弹,回首往事,那是一段痛不欲生的时光。整整一年之后,我才对Web安全有了比较系统的认识,揭开未知事物的面纱会发现其实并没有多恐怖,哪有那么多漏洞让人去攻击。
安全习惯培养起来之后,会定期去关注最新的漏洞上报,看看漏洞详情。然后想一想自己维护的项目有没有相关问题,如此反复肯定能为公司省不少钱。
三. 从小事做起
现在就检查自己的电脑,本地nginx、apache、tomcat服务器是不是可以直接访问。很多开源CMS都有漏洞,比如Wordpress,phpMyAdmin等,如果有的话请设置过滤规则。本地搭建的MySQL或者Redis环境是不是弱口令?是的话请尽快修改。内网其实不安全,说不定现在就有同事在浏览你的磁盘、聊天记录、浏览记录、甚至邮箱密码。如果你是程序员,一定要先有内网安全意识。
四. 常见Web漏洞
- 注入漏洞
- SQL注入漏洞
- XSS漏洞
- HTTP响应头注入漏洞
- 跳转漏洞
- XML注入漏洞
- 信息泄漏漏洞
- phpinfo()信息泄漏漏洞
- 测试页面泄漏在外网漏洞
- 备份文件泄漏在外网漏洞
- 版本管理工具文件信息泄漏漏洞
- 管理后台泄漏漏洞
- 泄漏内部员工电子邮箱以及分机号码
- 错误详情泄漏漏洞
- 邮箱或者手机号撞库漏洞
请求伪造漏洞
- CSRF漏洞
权限控制漏洞
- 文件上传漏洞
- crossdomain.xml配置不当漏洞
- flash标签配置不当漏洞
- embed标签配置不当漏洞
- Cookie安全性漏洞
其他攻击漏洞
- 构造Hash冲突
- 短信邮箱轰炸
如上都是比较常见的Web漏洞,有些我一时记不起来有遗漏,大家可以留言告知。 很多漏洞表面上不会造成严重后果,但是安全无小事,千里之堤,溃于蚁穴。一个程序员的编码水平也体现在安全防范意识上,切忌不要抱有侥幸心理。
PS:我最初是计划把每一项漏洞都举例说明,但是实在太多了于是放弃,有疑问的同学可以留言。
现在大家开发Web项目都会使用框架,很多优秀的框架都能帮忙规避风险,所以只需要平时心中有根弦,多思考漏洞发生的特定场景,哪些业务场景容易出现漏洞多防患即可。
五. 总结
作为Web开发人员需要思考的问题非常多,安全方面只是冰山一角。当我们的项目中引入一款新工具时不能只看到工具的便捷,还要看到稳定性与安全性方面的问题。