白帽子讲Web安全(第 16 章 互联网业务安全)

第 16 章 互联网业务安全

16.1 产品需要什么样的安全

一个完整的产品有许多特性,互联网产品亦如此。互联网产品其实是网站提供的在线服务产品特性包括性能、美观、方便性等方面,同时也包括安全。

一般来说,安全是产品的一个特性。

安全本身可视作产品的一个组成部分。一个好的产品,在设计之初,就应该考虑是否会存在安全隐患,从而提前准备好对策。将安全视为产品特性,往往也就解决了业务与安全之间的矛盾。

其实业务与安全之间本来是没有冲突的,出现冲突往往是因为安全方案设计的不够完美。比如安全方案的实现成本相对较高,从而不得不牺牲一些产品功能上的需求,有时候牺牲的可能还有性能。

16.1.1 互联网尝品对安全的需求

当一个产品功能有缺陷、用户体验极差,甚至是整天宕机的时候,是谈不上安全性的,因为产品本身可能都已经无法存在下去了。但是当一个产品其他方面都做得很好的时候,安全有可能成为产品的一种核心竞争力,成为拉开产品与竞争对手之间差距的秘密武器。只有安全也做的好的产品,才能成为真正的好产品。

安全性做的好的产品,对于用户来说可能不会有什么特别的感觉,因为坏人、坏的信息已经被处理掉了;相反,如果产品安全没有做好,则用户一定会感受到:垃圾消息泛滥、骗子满地跑,这些业务安全的问题会带来糟糕的用户体验,有时候甚至会毁掉一个新兴的领域。

安全是产品特性的一个组成部分,具备了安全性,产品才是完整的;安全做好了,产品最终才能真正成熟。

16.1.2 什么是好的安全方案

可是产品需要什么样的安全呢?产品在选择安全方案时,往往会面临很多选择,这时候又该如何取舍呢?

笔者认为,一个优秀的安全方案,除了可以有效的解决问题以外,至少还必须具备两个条件:

  1. 良好的用户体验;
  2. 优秀的性能。

这两点,也往往是产品对安全方案所提出的最大挑战。

假如要设计一个安全方案,保护网站的 Web 登录入口,如何着手呢?

对于认证,我们有许多选择,最基本的做法是使用用户名和密码认证,而一些敏感系统可能会选择双因素( Tow Factors )认证。比如网上银行办理的“ U 盾 ”、“动态口令卡”、“令牌”、“客户端证书”、“手机短信验证码”等业务,就都属于双因素认证,它在用户名与密码之外再做了一次认证。

然而,双因素认证可能会降低用户体验,因为用户使用起来更加麻烦了。比如用户每次登录时,都需要接收一条手机短信,将短信接收到的动态口令结合密码一起用于认证。对于用户来说,这是很痛苦的一件事情。

目前用的比较多的双因素认证方案,都或多或少的存在类似的问题。比如,手机短信有一个到达率的问题,有些国外的用户就接收不到手机短信;“ U 盾”、“令牌”的制作成本比较高,不大面积推广的话是一笔不菲的花费;客户但证书则需要解决不同浏览器、不同操作系统的兼容问题,以及证书的过期与更新也不是件容易的事情。

目前的双因素认证方案,提高了用户的使用门槛,损失了部分用户体验,远远不如一个用户名和密码简单。因此,我们需要慎重使用双因素认证方案。一般来说,只有一些安全要求非常高的账户,或者系统本身就及其敏感的地方,才使用双因素认证方案。

复杂密码安全吗?

设置复杂密码也是一种糟糕的体验。有些非活跃用户,可能常常会忘记一个非常复杂的密码;而有的用户设置了一个自己也记不住的密码后,可能会吧“记不住的密码”记录在便条或者本子上,甚至是贴在电脑显示器上,这反而导致密码泄露的可能性提高了。

其实设置复杂密码的初衷,是担心密码会被攻击者猜解。密码被猜解的途径有很多种,最常见的是暴力破解;其次是密码有关联性,比如密码是用户的手机号码、生日等。所以“提高密码复杂度”这个安全需求,其本质可以分解为:

  1. 如何对抗暴力破解;
  2. 如何防止密码中包含个人信息。

这样,设计安全方案的思路就有了一些变化。

比如可以在登录的应用中检测暴力破解的尝试。检查一个账户在一段时间内的登录失败次数,或者检测某一个 IP 地址在一段时间内登录行为次数。这些行为都是比较明显的暴力破解特征。暴力破解往往还借助了脚本或者扫描器,那么在检测到此类行为后,向特定客户端返回一个验证码,也可以有效的缓解暴力破解攻击。

如何防止密码中包含个人信息呢?在用户注册时,可以收集到用户填写的隔个人资料,如果发现用户使用了诸如:用户名、邮件地址、生日、电话号码之类的个人信息作为密码,则应当即进行提示。

解决好了这两个问题,也就解决了用户密码可能被猜解的威胁。而这样的一套安全方案,对于用户基本上是透明的,没有侵入性,也没有改变用户的使用习惯。这样的方案,把安全需要付出的成本转移到网站。而·设定“用户不能使用个人信息作为密码”的策略后,对用户也是一种引导,在注册的环节教育用户如何形成良好的安全习惯。

但问题并未至此结束。这套方案的前提是密码认证所面临的威胁只有“暴力破解”和“密码中包含个人信息”。如果出现了新的未考虑到的威胁,还是有可能让用户处于危险之中。

安全是产品的一种特性,如果我们的产品能够潜移默化的培养用户的安全习惯,将用户往更安全的行为上引导,那么这样的安全就是最理想的产品安全。

16.2 业务逻辑安全

16.2.1 永远改不掉的密码

业务逻辑问题是一种设计缺陷,在产品开发过程中,可以考虑在产品设计和测试阶段解决。但业务逻辑问题没有一个成熟的归纳体系,很多时候,只能依靠安全工程师的个人经验来判断这些问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值