白帽子讲web安全
# 安全问题的本质
信任
# 安全三要素
机密性(Confidentiality)、完整性(Integrity)、可用性(Avaliability)
机密性要求保护数据内容不能泄露。
完整性要求数据内容是完整的、没有被篡改的。
可用性要求保护资源是 “随需而得”。
# 安全评估的过程
资产等级划分、威胁分析、风险分析、确认解决方案。
# 互联网安全的核心问题
数据安全
# 威胁和风险
可能造成危害的来源称为威胁,可能会出现的损失称为风险。
# 威胁分析 STRIDE 模型
威胁 | 定义 | 对应的安全属性 |
---|---|---|
Spoofing(伪装) | 冒充他人身份 | 认证 |
Tampering(篡改) | 修改数据或代码 | 完整性 |
Repudiation(抵赖) | 否份做过的事情 | 不可抵赖性 |
InformationDisclosure(信息泄露) | 机密信息泄露 | 机密性 |
Denial of Service(拒绝服务) | 拒绝服务 | 可用性 |
Elevation of Privilege(提升权限) | 未经授权获得许可 | 授权 |
# 风险分析 DREAD 模型
等级 | 高(3) | 中(2) | 低(1) |
---|---|---|---|
Damage Potential | 获取完全验证权限;执行管理员操作;非法上传文件 | 泄露敏感信息 | 泄露其他信息 |
Reproducibility | 攻击者可以随意再次攻击 | 攻击者可以重复攻击,但有时间限制 | 攻击者很难重复攻击过程 |
Exploitability | 初学者在短期内能掌握攻击方法 | 熟练的攻击者才能完成这次攻击 | 漏洞利用条件非常苛刻 |
Affected users | 所有用户,默认配置,关键用户 | 部分用户,非默认配置 | 极少数用户,匿名用户 |
Discoverability | 漏洞很显眼,攻击条件很容易获得 | 在私有区域,部分人能看到,需要深入挖掘漏洞 | 发现该漏洞极其困难 |
# Secure By Default 原则
白名单、黑名单:如果更多的使用白名单,那么系统就会变得更安全
最小权限原则:要求只授予主体必要的权限,而不要过度授权。
# 纵深防御原则
纵深防御包含两层含义:首先,要在各个不同层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体;其次,要在正确的地方做正确的事情,即:在解决根本问题的地方实施针对性的安全方案。
# 数据与代码分离原则
程序在栈或者堆中,将用户数据当做代码执行,混淆了代码与数据的边界,从而导致安全问题的发生。
# 不可预测性原则
通过使数据不可预测达到让攻击方法失效的效果。
# 浏览器安全
# 同源策略
它用于限制一个 origin 的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。
浏览器的同源策略,限制了来自不同源的 “document” 或脚本,对当前 “document” 读取或设置某些属性。
# 浏览器沙箱
让不可信任的代码运行在一定的环境中,限制不可信任的代码访问隔离区之外的资源。如果一定要跨越 Sandbox 边界产生数据交换,则只能通过指定的数据通道,比如经过封装的 API 来完成,在这些 API 中会严格检查请求的合法性。
# 恶意网址拦截
恶意网址拦截的工作原理很简单,一般都是浏览器周期性地从服务器端获取一份最新的恶意网址黑名单,如果用户上网时访问的网址存在于此黑名单中,浏览器就会弹出一个警告页面。
# 跨站脚本攻击(XSS)
跨站脚本攻击,英文全称是 Cross Site Script,通常指黑客通过 “THML 注入” 篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制浏览器的一种攻击。
# XSS 攻击类型
第一种:反射型攻击。把用户输入的数据 “反射” 给浏览器。
第二种:存储型攻击。把用户输入的数据 “存储” 在服务器端。
第三种:DOM Based XSS。通过修改页面的 DOM 点形成 XSS。