初识CISSP
---
tags: [安全, CISSP]
---
CISSP(Certification for Information System Security Professional)即信息系统安全专业认证
## CISSP十大原则
1、简单易懂
越复杂越容易出错
减少冗余、提高组件重用度。
> 可用性与安全:
> 1.用户不会阅读文档
> 2.与用户交谈以弄清其安全性需求
> 3.认识到用户未必总是正确的
> 4.用户是懒惰的
2、最小特权
只授予执行操作所必须的最少访问权,并且对于该访问权只准许使用所需的最少时间。
3、故障安全化
故障是难免的,可以避免的是同故障有关的安全性问题。
安全与可用性:
例如单点故障会影响所有人的使用,设计一定的冗余度,当一个组件出现故障时,可以无缝切换到备用组件。
4、保护最薄弱环节
银行里的钱比便利店多,但便利店更容易遭到抢劫。
密码术不太会是系统最薄弱的部分,如果攻击者想访问通过网络传输的数据,那么将其中一个端点作为目标,找到诸如缓冲区溢出之类的缺陷,然后在数据加密之前或解密之后查看数据。如果存在可利用的缓冲区溢出,那么世界上所有的密码术都帮不了您。
5、提供纵深防御
使用多重防御策略来管理风险,以便在一层防御不够时,在理想情况下,另一层防御将会阻止完全的破坏。
纵深防御:采取一系列防御,以便在一层防御不能抓住错误时,另一层防御将可能抓住它。
> 2011年轰动全国的各大网站数据泄漏事件
6、分隔
将系统分成尽可能多的独立单元,可以对系统造成的损害降到最低。例如潜水艇对不同船舱独立密封。又例如监狱。
标准的UNIX特权模型,安全性的关键的操作是以“完全访问或根本不准访问”为基础的。
不要把所有鸡蛋都放一个篮子里,比如web服务、数据库服务、文件服务都放一台服务器上。
分隔的使用必须适度。
7、总体调节
每次访问一个对象时,都要检查访问是否授权,特别是对安全来说很关键的对象。
示例:在一个网站的注册页面上,需要输入Captcha,当用户提交注册时,先发请求校验Captcha的有效性再发送注册的用户信息。但是第二步请求处理时没有验证前一次检查的Captcha结果,导致可以直接绕过验证Captcha的请求,直接发送注册用户的请求。
这里虽然做了验证,但没有使用验证的结果,就等于没有做验证。
8、默认不信任
直接对象引用、缺乏访问控制的URL等问题,都是由于默认信任导致的。
现成的软件可以帮助您简化您的设计和实现,但您怎么知道现成组件是安全的呢?
信任是可以转移的。一旦您信任某个实体,就会暗中将它扩展给实体可能信任的任何人。出于这个原因,可信的程序决不应该调用不可信的程序。
无失败地重复使用会增进信任。公众的监督也可增进信任。于是一个常见的误解是相信”开放源码“软件极有可能是安全的,因为源代码可用性将导致人们执行安全性审计。而一些强有力的证据表明,源代码可用性没有为人们审阅源代码提供强大的动机。
9、保护隐私
用户通常认为隐私是安全性问题。
维护隐私可能经常要与可用性做折中。
用户隐私不是您应该考虑的唯一的隐私类型。
避免给出更多不必要的信息。比如Telnet服务,往往会给出操作系统名称和版本。为什么不对这类信息撒谎呢?比如将Linux机器说成Solaris机器,让潜在攻击者白费力气。如果您正在使用Rijndael作为加密算法,你可以声明您实际上使用Twofish。这两种算法被认为提供相似级别的密码安全性,因此不存在任何损害。
10、公开设计,不要假设隐藏秘密就是安全
很多人以为用二进制表示的秘密也许能保守秘密,因为要抽取它们太困难了。但要对“秘密”保密实在是太困难了。
某些人擅长对二进制进行逆向工程,这就是软件复制保护方案越来越不适用的原因。
供应商为阻止人们发现“解锁”软件的秘密所投入的精力越多,软件破解者在破解软件上花的力气也越多。在极大程度上,都是破解者达到目的。
如果软件都在您自己网络的服务器端运行,您可能会判定您的秘密是安全的。实际上它比隐藏秘密难得多。如果您可以避免它,就不应该信任您自己的网络。**这就是在他们发行第一版Quake之前发生在Id软件上的事情**。
比如“内部人员”的攻击,滥用访问权。
有时人们不需要对软件进行逆向工程,只要观察正在运行的软件,就常常发现这些秘密。
相信二进制(获取其他形式的模糊)为您保守秘密的实践被亲切地称作:“含糊的安全性(security by obscurity)“
这并不意味着它没有用武之地,而是您应该避免将它用作您唯一的防御线。
## 安全设计原则
最小特权原则
权限分离原则
最少共享机制原则
完全中立原则
心理可接受度原则
默认故障处理保护原则
经济机制原则
不信任原则
纵深防御原则
保护最薄弱环节原则
公开设计原则
隐私保护原则
攻击面最小化原则
## 安全编程准则
验证输入、避免缓冲区溢出、程序内部安全、安全调用组件、程序编写编译等;
>了解编码时禁止使用的风险函数;
>了解相关的安全编码标准及建议;
>理解常见的代码安全问题及处置办法。
## 安全测试方法
模糊测试
渗透测试
静态源代码审核
# 参考文献
[CISSP十大原则](http://www.doc88.com/p-2971795359567.html)