白帽子讲Web安全学习笔记
Web安全兴起的里程碑
1、SQL注入
2、XSS(跨站脚本攻击)
安全三要素:
1、机密性
要求保护数据内容不能泄露,加密是实现机密性的常用手段;
2、完整性
要求保护数据内容是完整的,没有被篡改,常见的保证一致性的技术手段是数字签名;
3、可用性
要求保护资源是随需而得的,常见的是拒绝服务攻击,简称DoS;
扩充要素:可审计性,不可抵赖性等。
安全评估四阶段
1、资产等级划分
明确目标是什么,要保护什么。互联网安全的核心问题是数据安全的问题。资产等级划分即需与各个业务部门的负责人沟通了解公司最重要的资产是什么,最看重的数据是什么,以及不同数据的重要程度;确认了目标之后再进一步划分信任域和信任边界;
2、威胁分析
威胁即可能造成危害的来源;风险为可能出现的损失;威胁分析即把所有的威胁找出来;
3、风险分析
4、设计安全方案
一个好的安全模块同时应该是一个优秀的程序,从设计需要做到高聚合、低耦合、易于扩展,如Nmap的用户可以自己根据需要写插件,实现一些更为复杂的功能,满足个性化需求。
优秀的安全方案特点:
- 能有效解决问题
- 用户体验好
- 高性能
- 低耦合
- 易于扩展与升级
安全评估的产物是安全方案
白帽子兵法
设计安全方案的技巧
1、Secure By Default原则
该原则可归纳为白名单、黑名单思想,更多的使用白名单可使系统变得更安全;
1.1 黑名单、白名单
使用白名单策略; 比如WEB安全中,应用处理用户提交的富文本时,考虑到XSS的问题,需做安全检查;常见的XSS Filter一般是先对用户输入的HTML原文作HTML,Parse,解析成标签对象后,再针对标签匹配XSS的规则,这个规则列表就是一个黑白名单。
使用白名单时避免出现类似通配符*
1.2 最小权限原则
要求系统只授予主体必要的权限以有效的减少系统、网络、应用、数据库出错的机会;
使用该原则时需认真梳理业务所需要的权限。
2、 纵深防御原则
该原则包含两层含义:首先要在个不同层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需相互配合,构成一个整体;其次,要在正确的地方做正确的事情,即在解决根本问题的地方实施针对性的安全方案。
就入侵的防御来说,需考虑Web应用安全、OS系统安全、数据库安全、网络环境安全等,在这些不同层面设计的安全方案将共同组成整个防御系统。
3、 数据与代码分离原则
该原则适用于各种由于注入而引发安全问题的场景;
例如缓冲区溢出导致程序在栈或者堆中将用户数据当做代码执行,混淆了代码与数据的边界,从而引发安全问题;由注入导致的问题常见的有XXS、SQL Injection、CRLF Injection、X-Path Injection等。
4、不可预测性原则
令数据为随机不可预测,具有一定的随机性,能有效对抗基于篡改伪造的攻击;该原则可巧妙地用在一些敏感数据上,从而不会被攻击者猜测到;实现的需要用到加密算法、随机数算法和哈希算法等。
5、总结
Secure By Default是时刻需牢记的总则;纵深防御是要更全面、更正确地看待问题;数据与代码分离,是从漏洞成因上看问题;不可预测性原则,是从克服攻击方法的角度看问题。
更多内容请关注微信公众号:
全栈开发之技术栈
全栈开发之技术栈
