安全的本质是信任问题。web
经过一个安全检查的过程,能够梳理未知的人或物,使其变得可信任。被划分出来的具备不一样信任级别的区域,咱们成为信任域;划分两个不一样信任域之间的边界,咱们成为信任边界。算法
数据从高等级的信任域流向低等级的信任域,是不须要通过安全检查的;数据从低等级的信任域流向高等级的信任域,则须要通过信任边界的安全检查。安全
安全三要素分别是机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。ide
机密性要求保护数据内容不能泄露,加密是实现机密性的常见手段。web安全
完整性要求保护数据内容是完整的、没有被篡改的。 常见的保证完整性的手段是 数字签名。性能
可用性要求保护资源是“随需而得”。DoS(Denial of Service)攻击针对的就是安全元素的可用性。加密
安全评估能够又如下四个部分组成: 资产等级划分、威胁分析、风险分析、确认解决方案。设计
资产等级划分是全部工做的基础,明确咱们目标是什么,要保护什么。orm
互联网安全的核心问题,是数据安全的问题。token
在这个过程当中,咱们须要明确咱们保护的核心数据是什么,并对数据的安全等级进行划分,来区分出不一样数据的重要程度。
在完成等级划分后,接下来就是划分信任域和信任边界了。在这个阶段,能够根据数据安全等级的不一样,划分不一样的信任域,不一样信任域之间的数据流动必须通过安全边界的检查。
在安全领域,咱们把可能形成危害的来源成为威胁(Threat),把可能会出现的损失成为风险(Risk)。
威胁分析就是把全部可能的威胁都找出来。具体怎么找呢? 通常是采用头脑风暴法。固然也有一种比较科学的方法,就是威胁建模。
下面咱们来看最先有微软提出的 STRIDE威胁建模。
STRIDE是由六个字母的首字母缩写,咱们分析威胁的时候,能够从如下六个方面考虑:
威胁 | 定义 | 应对的安全属性 |
---|---|---|
Spoofing(假装) | 冒充他人身份 | 认证 |
Tampering(篡改) | 修改数据或代码 | 完整性 |
Repudiation(抵赖) | 否定作过的事情 | 不可抵赖性 |
InformationDisclosure(信息泄露) | 机密信息泄露 | 机密性 |
Denial of Service(拒绝服务) | 拒绝服务 | 可用性 |
Elevation of Privilege(提高权限) | 未经受权得到许可 | 受权 |
在进行威胁分析的时候,要尽量的不遗漏威胁。
影响风险高低的因素,除了形成损失的大小外,还须要考虑发生的可能性。
安全评估的产出物,就是安全方案。安全方案要有必定的针对性,这种针对性是由等级划分、威胁分析、风险分析等阶段的结果给出的。
安全是为产品的发展和成长保驾护航的,咱们不能用“粗暴”的方案去阻碍产品的正常发展。
没有不安全的业务,只有不安全的实现方式。
好的安全方案应该是对用户透明的,尽量不要改变用户的使用习惯。
好的安全方案应该有如下特色:
简单来讲,黑名单就是名单上的是被禁止的,不在名单上的均可被信任;白名单正好相反,名单上的可被信任,不在名单上的都不可信任。
通常状况下,最好是使用白名单,这样的方案虽然有时候会比较麻烦,但不失为一种谨慎的方案。
白名单也有不太好的地方,前面咱们说到“安全问题的本质是信任问题,安全方案也是基于信任来作的”,白名单的策略,是基于白名单可被信任的基础来的,若是白名单容易被篡改,那么这个安全就无从谈起了。
最小权限原则要求系统只授予必要的权限,而不是过分受权。
这就要去咱们认真梳理业务须要的权限,并细分权限。在受权的时候不妨反问下: 这个权限确实是必须的吗?
纵深防护包含两层含义:首先,要在不一样的层面、不一样方面实施安全方案,避免出现疏漏,不一样安全方案之间要互相配合,构成一个总体;其次,要作正确的地方作正确的事情,即:在解决根本问题的地方实施针对性的方案。
这一原则普遍使用 各类因为“注入”引起的问题。
web安全中,由注入引发的问题比比皆是: XSS、SQL Injection、CRLFInjection,X-Path Injection等
前面介绍的几条原则: Secure By Default, 是时刻要牢记的总则;纵深防护, 是要更全面、正确的看待问题;数据和代码分离,是从漏洞成因上看问题; 记下来的 不可预测原则,则是从客服攻击方法的角度看问题。
不可预测性,就是不让咱们数据有规律,从而加大攻击的难度,甚至使得攻击方法失效。
好比说有的博客会用顺序递增的数字来做为文章的惟一标识,这样的话只有知道一篇文章的id就能够推测出其余文章的id。。
还有在CSRF防护技术中,一般会使用一个随机的token来防护。
不可防护性每每须要用到加密算法、随机数算法、哈希算法等。好好使用这条原则,在设计安全方案的时候每每会事半功倍。