Web开发者安全速查表

标签: WEB安全 | 发表时间:2017-05-24 06:00 | 作者:Alpha_h4ck
分享到:
出处:http://www.freebuf.com

想要开发出一个安全的、健壮的Web应用其实是非常困难的,如果你觉得这实现起来非常简单的话,那么你一定是一个X炸天的程序猿,要么你就是在白日做梦……

1.png

写在前面的话

如果你觉得你可以在一个月之内开发出一款集使用价值、用户体验度、以及安全性为一身的产品,那么在你将产品原型真正推上市场之前,请一定要三思啊!

当你仔细核查了本文给出的安全小贴士之后,你可能会发现你在产品的开发阶段跳过了很多重要的安全步骤。有的时候,也许你应该对你的用户坦诚一点,你应该诚实地告诉他们这款产品还没有完全搞定,还有很多的安全问题亟待解决。

下面的这份速查表非常简洁,而且绝对还有很多东西没有涉及到。就我个人而言,我从事安全Web应用开发工作已经超过14年了,而本文给出的小贴士都是让我在过去一段时间里曾痛苦不堪的重要安全问题。我希望大家可以认真对待,不仅是对用户负责,也要对自己的职业生涯负责。

数据库篇

1.    对类似访问令牌、电子邮箱地址或账单详情进行加密处理,尤其是用户的身份识别信息(密码)。

2.    如果你的数据库支持低成本加密,请确保开启这项功能并保护主机磁盘中的数据。与此同时,确保所有的备份文件都进行了加密存储。

3.    按照最小权限原则给数据库访问账号分配权限,不要使用数据库的root账号。

4.    使用密钥存储器来保存或派发密钥,不要直接将密钥硬编码在你的应用之中。

5.    通过使用SQL预处理语句来避免SQL注入攻击。比如说,如果你使用的是NPM,那么请不要使用npm-mysql,你应该用的是npm-mysql2,因为它支持SQL预处理语句。

开发篇

1.    确保你软件中所有组件的每一个版本都进行了漏洞扫描,包括接口、协议、代码以及数据包。

2.    对产品中所有使用到的第三方工具时刻保持警惕性,选择一款安全系数较高的开发平台。

身份验证篇

1.    使用合适的加密算法(例如bcrypt)来计算并存储密码哈希,在初始加密时选择合适的随机数据,还有就是千万不要自己去写一个加密算法。

2.    使用简单但健壮的密码规则,以鼓励用户设置长度足够安全的随机密码。

3.    在服务的登录机制中引入多因素身份验证功能。

DoS保护篇

1.    确保那些针对API的DoS攻击不会严重影响你网站的正常运行,至少要限制API的请求访问速率。

2.    对用户所提交的数据和请求进行结构和大小的限制。

3.    使用类似 CloudFlare这样的缓存代理服务来为你的Web应用添加 DDoS缓解方案

2.png

Web流量篇

1.    使用TLS,不只是你的登录表单和网站响应数据,而是你的整个网站都应该使用TLS。

2.    Cookie必须为httpOnly。

3.    使用CSP(内容安全策略),虽然配置过程比较麻烦,但这觉得是值得的。

4.    在客户端响应中使用X-Frame-Option和X-XSS-Protection头。

5.    使用HSTS响应,使用HTTPS。

6.    在所有的表单中使用CSRF令牌。

API篇

1.    确保你所有的公共API中没有可以枚举的资源。

2.    确保用户在使用你的API之前,对他们的身份进行验证。

验证篇

1.    在客户端对用户的输入进行验证,并即使给予反馈(Ajax),但永远不要相信用户输入的数据。

2.    在服务器端再对用户所输入的每一个字符进行一次彻底的验证,永远不要直接将用户输入的内容注入到响应数据中,永远不要直接在SQL语句中插入用户提供的数据。

云端配置篇

1.    确保所有的服务只开启必要的端口,关闭不用的端口,并对常用端口进行强制性的安全保护,因为通过非标准端口来进行攻击对于攻击者而言相对来说是比较困难的。

2.    确保服务器后台数据库和后台服务无法通过公网查看到。

3.    在单独的VPC节点配置逻辑服务或提供服务内通信。

4.    确保所有的服务只接受来自有限IP地址的数据。

5.    限制输出数据的IP地址以及端口。

6.    使用AWS IAM角色,不要使用root凭证。

7.    对所有的管理员和开发人员提供最小的访问权限。

8.    定期更换密码和访问密钥。

基础设施篇

1.    确保可以在主机不下线的情况下进行更新操作,确保部署了全自动化的软件更新策略。

2.    使用类似Terraform这样的工具来创建所有的基础设施,不要使用云端console(控制台)来进行创建。

3.    对所有服务的日志进行集中记录,不要通过SSH来访问或获取日志。

4.    不要让AWS服务组的端口22保持开启状态。

5.    一定要部署入侵检测系统。

操作篇

1.    关闭不用的服务和服务器,因为最安全的服务器是那些关闭着的服务器。

测试篇

1.    开发完成之后,对你的设计和代码实现进行多次安全审查。

2.    进行渗透测试,也就是自己黑自己,但你也要让别人来对你的网站进行渗透测试。

计划篇

1.    创建一个安全威胁模型,用来描述你可能会遇到的威胁以及攻击者。

2.    设计一个安全应急响应方案,你总有一天会用到的。

3.png

篇尾语

如果你觉得这个清单遗漏了什么的话,欢迎在文章下方的评论区留言补充,安全社区的壮大需要大家的共同努力。

* 参考来源: simplesecurity, FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

相关 [web 开发] 推荐:

Web开发入门(转载)

- linchanx - Starming星光社最新更新
Web应用的竞争异常激烈,开发难度也是入门容易做好很难,所以第一次开发的应用不成功是很正常的事情. 不过这正是一个积累的过程,反正你需要的只是电脑和少量服务器经费,所以多磨练几次,水平自然会提高. 2, 习惯阅读及查阅英文资料. 前沿信息基本源自美国,翻译的东西不及时,不全,很多水平不高,再加之中文原创资料毕竟很有限,因此是否能熟练地查阅英文资料决定了你获取信息的 及时性和质量.

web开发利器之grunt

- - CSDN博客Web前端推荐文章
grunt不难,它主要依赖的是nodeJS的npm包管理器,和一个JSON及一个JS文件,先说说npm包管理器,玩过nodeJS的对它应该都很熟悉,在这里我们只需要安装nodeJS即可(新版的nodeJS基本都集成了npm),至于nodeJS的安装可以 点这里,这这篇文章就不做详细介绍,安装完后打开命令管理器(nodeJS安装完后的终端)输入:.

Spring MVC 与 web开发

- - 码蜂笔记
项目组用了 Spring MVC 进行开发,觉得对里面的使用方式不是很满意,就想,如果是我来搭建开发环境,我会怎么做. 下面就是我的想法,只关注于 MVC 的 View 层. 现在基本上都是用 ajax 来调用后台接口,拿到 json格式的数据再展示,有的人直接返回数据,却没有考虑异常的情况,我觉得返回的报文里必须包含表示可能的异常信息的数据和业务响应数据.

Web开发者必备:Web应用检查清单

- - ITeye博客
想做一个高质量的Web应用,前前后后要做的事情非常多. 国外开发者 Ata Sasmaz 为 Web 开发者制作分享了一份检查清单,包括应用开发、性能、安全、分析、可用性、可靠性、转换策略、竞争策略这些方面需要注意的事项. 清单内容可能不全面,欢迎大家在评论中补充. JavaScript 允许捕获异常.

Web应用程序的开发步骤

- xxg - 月光博客
  如今已进入了web2.0高速发展的互联网时代,各种互联网的Web应用程序如雨后春笋般出现. 那么作为一名Web开发人员,怎样去开发一款优秀的Web应用程序呢. 这个问题没有一个简单的答案,甚至那些教育机构都未必能清楚的知道. 所以,像大多数在这个领域里的web开发人员一样,我们只是通过去做,去实验才学会了这些.

Web开发人员速查卡

- abcd - 酷壳 - CoolShell.cn
无论你是多牛的程序员,你都无法记住所有的东西. 而很多时候,查找某些知识又比较费事. 所以,网上有很多Cheat Sheets,翻译成小抄也好 ,速查卡也好,总之就是帮你节省 时间的. 之前给大家介绍过Web设计的速查卡、25个jQuery的编程小抄,还有程序员小抄大全,今天转一篇开发人员的速查卡,源文在这里.

平台是Web开发的未来吗?

- iyuan - 伯乐在线 -博客
  导读:本文是Arjun Khanna关于平台的出现以及它们如何简化Web开发的个人分析,也分析了平台的缺点和它们能够继续存在的因素.   即便现在大部分网站开发人员所构建的网站在结构上非常相似,或是至少在布局方面会有一些根本的共同之处,如果你问一下,他们大多会说他们还有一大堆的苦差使要头疼呢. 虽然客户几乎都要求顶上有横幅,导航条在左边,页面布局不超过三列,但是这并不使他们的工作更简单.

Web开发框架安全杂谈

- goodman - 80sec
最近框架漏洞频发,struts任意代码执行、Django csrf token防御绕过、Cakephp代码执行等等各大语言编程框架都相继暴出高危漏洞,这说明对于编程框架的安全问题已经逐渐走入安全工作者的视线. Web开发框架就相当于web应用程序的操作系统,他决定了一个应用程序的模型结构和编程风格.

最好的开源Web开发资源

- 陈晖 - Solidot
51开源社区 写道 "B2bweb.fr对“开源中最好的Web开发的资源(中文)进行了汇总.

Web 开发程序员招聘

- GLORY - 云风的 BLOG
前两天在 blog 里提到了 web 前端程序员招聘的消息 , 结果这两天收到了好多热情洋溢的 email , 真是受宠若惊. 上次说的不详细,其实也没完全想好,只是之前在讨论公司架构的时候提到了这个岗位. 昨天晚上又讨论了一下,把需求细化了一些. 我个人,作为程序员,对 web 前端开发领域没有太多了解,很惭愧.