实际上,Secure By Default原则,也可以归纳为白名单,黑名单的思想。如果更多地使用白名单,那么系统就会变得更安全。
2)最小权限原则
最小原则要求系统只授予主体必要的权限,而不要过度授权,这样能有效地减少系统,网络,应用,数据库出错的机会。
如果网站只提供Web服务,只允许开启80,443端口,屏蔽其它端口。
纵深防御原则
纵深防御原则包含两层含义:
1)要在各个不同层面,不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体;
2)要在正确的地方做正确的事情,即:在解决根本问题的地方实施针对性的安全方案。
数据与代码分离原则
这一原则适用于各种由于“注入”而引发安全问题的场景。
实际上,缓冲区溢出,也可以认为是程序违背了这一原则的后果——程序在栈或者堆中,将用户数据当做代码执行,混淆了代码与数据的边界,从而导致安全问题的发生。
不可预测性原则
微软使用的ASLR技术,在较新版本的Linux内核中也支持。在ASLR的控制下,一个程序每次启动时,其进程的栈基址都不相同,具有一定的随机性,对于攻击者来说,这就是“不可预测性”。
不可预测性,能有效地对抗基于篡改,伪造的攻击。
不可预测性的实现往往需要用到加密算法,随机数算法,哈希算法,好好利用这条规则,在设计安全方案时往往会事半功