安全问题的本质是信任问题
互联网安全的核心是数据安全,数据从高等级的信任域流向低等级的信任域,是不需要安全检查的;数据从低等级的信任域流向高等级的信任域,则需要经过信任边界的安全检查。
安全三要素(CIA)
C(Confidentiality) 机密性:保护数据内容不泄露。加密是实现机密性要求的常见手段。
I(Integrity) 完整性:保护数据内容是完整、没有被篡改的。常见的保证一致性的技术手段是数字签名。
A(Availability) 可用性:保护资源是“随需而得”。
安全评估
分为4个阶段,层层递进。
资产等级划分,威胁分析,风险分析,确认解决方案。
安全方案应具备:
- 能够有效解决问题
- 用户体验好
- 高性能
- 低耦合
- 易于扩展与升级
白帽子兵法
1. 最小权限原则
系统只授予主体必要的权限,而不要过度授权。比如对数据库的读写权限控制。
2. 纵深防御原则
- 要在各个不同的层面,不同的方面实施安全方案,避免出现疏漏,不同安全方案之间相互配合,构成一个整体。
- 在正确的地方做正确的事,即:在解决根本问题的地方实施针对性的安全方案。
3. 数据与代码分离原则
<html>
<head></head>
<body>
$var
</body>
</html>
$var
是用户数据,其余是代码段,当$var
的值是<script src="http://evil"></script>
就会出现安全问题。
根据数据与代码分离原则,重写代码片段:
<html>
<head></head>
<body>
<script>
$var
</script>
</body>
</html>
<script>
变成了代码片段的一部分,用户数据只有$var
能够控制。
4. 不可预测性原则
有效的对抗给予篡改、伪造的攻击。比如CSRF利用token进行有效防御。
同源策略
同源策略是一种约定,它是浏览器最核心也最基本的安全功能。浏览器的同源策略,限制了来自不同源的“document”或脚本,对当前“document”读取或设置某些属性。
浏览器沙箱
浏览器的多进程架构,将浏览器的各个功能模块分开,各个浏览器实例分开,当一个进程崩溃时,也不会影响到其他的进程。
Sandbox的设计目的一般是为了让不可信任的代码运行在一定的环境中,限制不可信任的代码访问隔离区之外的资源。如果一定要跨越Sandbox边界产生数据交换,则只能通过指定的数据通道,比如经过封装的API来完成,在这些API中会严格检查请求的合法性。
恶意网址拦截
恶意网址拦截的工作原理很简单,一般都是浏览器周期性地从服务器端获取一份最新的恶意网址黑名单,如果用户上网时访问的网址存在于此黑名单中,浏览器就会弹出一个警告页面。
EVSSL证书是全球数字证书颁发机构与浏览器厂商一起打造的增强型证书,其主要特色是浏览器会给予EVSSL证书特殊待遇。