第十六章 互联网业务安全
1产品需要什么样的安全
安全是产品的一个特性在设计之初就应该考虑是否存在安全隐患。
在这些开发者眼里,优先顺序是
功能实现、执行性能、可用性、按计划上线、可维护、安全
google搜索结果的安全,领先对手,检测挂马网站、钓鱼网站、欺诈网站。
反垃圾邮件领域,各家互联网公司各有妙招。垃圾邮件多少,也能判断出各个互联网公司在安全实力上的高低。
一个成熟的产品几乎必然会存在安全性方面的竞争。
安全做好了,产品最终才能真正成熟。
优秀的安全产品,至少还必须具备两个条件:
一、良好的用户体验
二、优秀的性能最基本的做法是使用用户名和密码认证
双因素认证可能会减低用户体验。
U盾,令牌的制作成本比较高
客户端证书需要解决不同的浏览器操作系统兼容问题,
证书过期更新也不是容易的事情。密码复杂度这个问题,其本质其实可以分解为:
1.如何对抗暴力破解
2.如何防止密码中包含个人信息检测到暴力破解行为后,向特定客户端返回一个验证码,也可以有效地缓解暴力破解攻击。
防止密码中包含个人信息,可以先对用户进行信息收集,发现弱口令后告警用户。
产品最好能够潜移默化地培养用户的安全习惯,将用户往更安全的行为上引导。
2业务逻辑安全
如果网站有多套系统,要注意修改密码时要同步,考虑充分体系间的影响。网站页面展示的是nickname而非用户的ID,防止针对ID的攻击。
验证码可以有效防止暴力破解,但是不要在用户第一次登陆时就使用验证码。
暴力破解需要高效率,检测到行为特征后锁定该IP,而不是账号,这样仅仅是把坏人关在门外。
进行敏感操作时要再次认证用户的身份,堤防黑客盗用身份操作。
认证用户可以使用安全问题、安全邮箱、手机验证码。
比较好的方法是,是使用用户在网站上留下的私有信息,比如曾经使用过的密码,已经删除的留言等。
这些个人足迹信息被称为用户基因3账户是如何被盗的
网站登录过程中无HTTPS,密码在网络中被嗅探。用户电脑中了木马,被键盘记录软件获取
用户被钓鱼网站迷惑,骗取密码
某登录入口没有防护,被暴力破解。
取回密码存在逻辑漏洞。
网站存在XSS 等客户端脚本漏洞,导致账户间接被盗
网站存在SQL漏洞,导致黑客入侵导致用户账户信息泄露。
按照DREAD模型,发现安全工作的优先级为,登录时的安全、网站实现上的安全、用户使用环境的安全。
暴力攻击因为门槛低,将长期一直存在。
4互联网的垃圾
垃圾注册几乎成为一切业务安全的源头认定一个账号是垃圾账号的依据是,该账号目的不是网站所提供的直接服务。
如果仔细分析垃圾注册的行为特征,可以大致分为:内容特征、行为特征、客户端本身的特征。
基于内容的规则:以自然语言分析、关键字匹配等为代表。
基于行为的规则:以业务逻辑规则为代表。
基于客户端识别的规则:以人机识别为代表,比如验证码,让客户端去解析JS语句。三条规则并用效果会好些,最终建立一个比较完善的风险控制系统。
检测到恶意用户后,打个时间差,防止规则见光死。5关于网络钓鱼
控制钓鱼网站的传播途径,就能对钓鱼网站起到有效打击。钓鱼网站的防御需要浏览器,反病毒厂商,银行,政府参与建立统一联盟。
直接打击钓鱼网站
监控到钓鱼网站后,通知DNS运营商、IDC运营商关停。
对用户的教育是必不可少的一环,告警用户很必要,但是过多的警告会使用户丧失警觉性。
模糊测试是 故意向应用程序引入不良格式或随机数据诱发程序故障。
6用户私隐保护
第十七章 安全开发流程(SDL)
1SDL简介
SDL适用于软件开发商,他们以贩卖软件为主要业务,
SAMM更适用于自主开发软件的使用者。2敏捷SDL
3SDL实战经验
1.充分沟通,排出足够的时间。
2.立项通知安全部门,避免遗漏。
3.树立安全部门的权威,必须由安全部门审核完成才能发布。
4.将技术方案写入工作手册中
5.安全部门给工程师培训安全方案
6.记录所有bug,激励bug少的部门。4需求分析与设计阶段
5开发阶段
最佳实践是制定出开发者的开发规范,并将安全技术方案写进开发规范中,让开发者牢记。将按方案写入开发规范中,就真正地让安全方案落了地。
回溯函数的调用如果遇到问题就换一个思路。
代码自动化审核工具的另一个思路是,找到所有可能的用户输入入口,然后跟踪变量的传递情况,
看变量最后是否会走到危险函数处。这种思路比回溯函数调用过程要容易实现,但会存在较多的误报。甲方公司完全可以定制代码审核工具。核心思路是,并非直接检查代码是否安全,而是检查开发者是否遵循了开发规范。
6测试阶段
可以基于开源的免费扫描器开发公司内部审核工具,比如w3af,skipfish
第十八章 安全运营
1把安全运营起来
无论是例行检查发现漏洞,还是0day被公布,都要完成这几件事情。
1. 建立漏洞跟踪机制,根据优先级无遗漏地修补
2. 建立漏洞分析机制,协同程序员一起修补
3. 定期统计漏洞,并校验漏洞修复情况。对存在过的漏洞归档,可以从全局的角度看到系统安全的状况。
2漏洞修补流程3安全监控
4入侵检测
5紧急响应流程
紧急响应一个漏洞主要的工作是在第一时间弄清楚问题产生的原因,并协调相关部门进行处理。
注意两件事。
一是需要保护安全事件现场,不着急评估损失,先弄清楚入侵者的行为有哪些。
比较合理的做法是先将被入侵的机器下线,在线下进行分析。
二是以最快的速度处理完问题。紧急流程建立后可以适当地进行一两次演习,以保证流程的有效性。
6小结