内容总结于《白帽子讲web安全》。(这是一本写的相当好的书,有时间建议对web安全感兴趣的读者可以阅读一下)
首先,关于安全,是没有绝对的安全的,我们能做的就是在成本允许范围内,尽最大努力做到最高程度的安全。
那什么是安全?那就得说到安全的三个最基本要素CIA。
C:confidentiality,机密性。即保护数据内容不能泄露,加密是实现机密性要求的常见手段。
I : Integrity,完整性。即保证数据内容是完整、没有被篡改的。常见的保证一致性的手段是数字签名。
A:Availability,可用性。即保证数据资源是随需可得的。常见的DoS攻击就是破坏可用性的。
理解了这三个要素,那大体对安全就有了一定的认识。
接下来就进入正题,来谈谈web安全兵法。
1。 Secure By Default原则,默认的、基本原则。一方面指白名单,黑名单的思想;另一方面指最小权限原则。
白名单法:就是罗列出被允许的选项列表。
黑名单法:就是罗列出不被允许的选项列表。
最小权限原则:要求系统只授予主体必要的权限,而不过渡授权。比如linux下一般先用普通用户登录,要执行root权限时再sudo一下。
2。Defense in Depth(纵深防御)原则。
也就是说整个安全系统是多个层次组成的整体,纵深防御要求每个层次都要做到安全可靠,即使某一外层出现漏洞,也能靠其他内层防御住,而不是一击即全层溃败。
3。数据与代码分离原则。
数据用来传递,计算或显示;代码用来执行。该原则要求数据处不允许出现代码,即要对数据进行严格过滤,出现不允许的代码便要过滤掉,这一点在防御xss等注入攻击方面有着奇效。如果设计者真要求数据处出现执行代码,则须改动原代码部分,而依旧使数据处只能输入数据。详细介绍可参见http://book.2cto.com/201208/1989.html
4。不可预测原则。要求在一些敏感数据上采用加密算法、随机数算法、哈希算法等使得这些数据变得不可预测,不容易被黑客或相关软件猜测出来。