Web开发人员对安全的思考

Web开发人员对安全的思考

最近总是在做总结,文章也比以前更新的勤了。回成都后生活很安逸,平时容易被忽略的很多事情现在都看的特别清晰,每天必须得学点东西才睡得着。前几天写了 程序员如何写好技术文档 ,发现相比代码类的文章这种总结类的文章更受欢迎,今天正好有机会说说Web安全方面的事情。

一. 意外之财

一个月前我正在写某个业务需要调用阿里的接口。在看接口文档时,感觉有个接口有安全漏洞,然后写了个简单的脚本验证了想法。在确认漏洞之后,马上将漏洞提交到了”阿里应急响应中心”,做完这些事花了不到20分钟,一气呵成。晚上回家还给女朋友吹嘘自己理论知识过硬,帮阿里发现了一个核心业务的漏洞,当了回雷锋!女朋友一脸崇拜(虽然她完全听不懂),之后也把这事给忘了。

过了有半个多月,有个人加我QQ,问我是不是白帽子,想多交流。我才想起登录到应急响应中心查看,看到提交的漏洞定级为『高危漏洞』,直接奖励¥2400。这个钱来的如此轻松,我都想转行做白帽子了。这件事情从另外一面说明了安全的重要性,如果用金钱去衡量的话,很多程序员每天都在亏钱。

二. 安全习惯的养成

在猫厂的时候,我『沟通』最多的就是安全部门的同学。代码上线需要安全审核,每天有安全扫描,甚至一个项目一个项目的验证接口(这点我相当佩服),定期的安全培训。加上很好的技术氛围,谁负责的项目被报出漏洞会觉得特别丢脸,像XSS、CSRF这种低级别的漏洞还要请全组的人吃鸡翅……

当时我手上有维护一个Wordpress项目,这个大家伙就像一个定时炸弹,回首往事,那是一段痛不欲生的时光。整整一年之后,我才对Web安全有了比较系统的认识,揭开未知事物的面纱会发现其实并没有多恐怖,哪有那么多漏洞让人去攻击。

安全习惯培养起来之后,会定期去关注最新的漏洞上报,看看漏洞详情。然后想一想自己维护的项目有没有相关问题,如此反复肯定能为公司省不少钱。

三. 从小事做起

现在就检查自己的电脑,本地nginx、apache、tomcat服务器是不是可以直接访问。很多开源CMS都有漏洞,比如Wordpress,phpMyAdmin等,如果有的话请设置过滤规则。本地搭建的MySQL或者Redis环境是不是弱口令?是的话请尽快修改。内网其实不安全,说不定现在就有同事在浏览你的磁盘、聊天记录、浏览记录、甚至邮箱密码。如果你是程序员,一定要先有内网安全意识。

四. 常见Web漏洞

  1. 注入漏洞
    1. SQL注入漏洞
    2. XSS漏洞
    3. HTTP响应头注入漏洞
    4. 跳转漏洞
    5. XML注入漏洞
  2. 信息泄漏漏洞
    1. phpinfo()信息泄漏漏洞
    2. 测试页面泄漏在外网漏洞
    3. 备份文件泄漏在外网漏洞
    4. 版本管理工具文件信息泄漏漏洞
    5. 管理后台泄漏漏洞
    6. 泄漏内部员工电子邮箱以及分机号码
    7. 错误详情泄漏漏洞
    8. 邮箱或者手机号撞库漏洞
  3. 请求伪造漏洞

    1. CSRF漏洞
  4. 权限控制漏洞

    1. 文件上传漏洞
    2. crossdomain.xml配置不当漏洞
    3. flash标签配置不当漏洞
    4. embed标签配置不当漏洞
    5. Cookie安全性漏洞
  5. 其他攻击漏洞

    1. 构造Hash冲突
    2. 短信邮箱轰炸

如上都是比较常见的Web漏洞,有些我一时记不起来有遗漏,大家可以留言告知。 很多漏洞表面上不会造成严重后果,但是安全无小事,千里之堤,溃于蚁穴。一个程序员的编码水平也体现在安全防范意识上,切忌不要抱有侥幸心理。

PS:我最初是计划把每一项漏洞都举例说明,但是实在太多了于是放弃,有疑问的同学可以留言。

现在大家开发Web项目都会使用框架,很多优秀的框架都能帮忙规避风险,所以只需要平时心中有根弦,多思考漏洞发生的特定场景,哪些业务场景容易出现漏洞多防患即可。

五. 总结

作为Web开发人员需要思考的问题非常多,安全方面只是冰山一角。当我们的项目中引入一款新工具时不能只看到工具的便捷,还要看到稳定性与安全性方面的问题。