专栏名称: 伯乐在线
关注职业资讯;学习各类职业感悟、心得和经验分享,扩大职业视野;体会求职、工作和创业的历程 - 就在JobBole.com 伯乐在线
目录
相关文章推荐
51好读  ›  专栏  ›  伯乐在线

做 Web 开发必备的安全核对清单

伯乐在线  · 公众号  · 程序员  · 2017-06-10 20:28

正文

请到「今天看啥」查看全文


如果你盲目接受最简可行产品(Minimum Viable Product,简称 MVP),并且认为你能在一个月之内创建一个既有价值又安全的产品,那么在你推出你的“产品原型”前,你还需要多想想。在你查看了下面的清单之后,确认你不会犯这些严重的安全问题。至少,你要对你的潜在用户坦诚,让他们知道你还没有一个完整的产品,并且只提供一个没有全面安全的原型。

这个清单很简单,并且也不是那种大而全的。我已经开发安全的 Web 应用有 14 年多了。这个清单包含了一些相对重要的问题。这些问题都是我在这段时间学到的,而这个过程也是痛苦的。当你在创建 Web 应用时,我希望你能够认真地对待这些问题。

如果在这个清单中,你有我没有提到的项目,请留言补充。

数据库

  • [ ] 可以识别用户的数据和敏感数据(如访问令牌、电子邮件地址或账单信息)需要加密。

  • [ ] 如果你的数据库在休息状态时支持低成本加密(如AWS Aurora),那么启动该功能来保护硬盘上的数据。同时也要确保所有备份都是被加密存储的。

  • [ ] 给用户最低访问权限的账户。不要使用数据库的 root 账户。

  • [ ] 刻意设计一个密钥库,用它存储和分发机密内容。不要硬编码到你的应用中。

  • [ ] 通过只使用 SQL 预处理语句(prepared statements)的方法来完全防止 SQL 注入。比如:如果要使用 NPM,不要使用 npm-mysql,而是使用 npm-mysql2,因为它支持预处理语句。

开发

  • [ ] 对于每个发布的版本,确保软件的所有组件都通过了漏洞扫描。组件指的是操作系统、库和包。这应该自动地进入持续集成/持续交付流程。

  • [ ] 保证开发系统的安全。同样的,对于你使用的产品系统,也需要保持相同的警惕。在安全、隔离的开发系统中开发软件。

认证

  • [ ] 确保所有密码都经过合适的加密方法(如 bcrypt )的散列处理。永远不要自己实现加密方法,并且用好的随机数据来正确地初始化加密方法。







请到「今天看啥」查看全文