安全原则
(一)白名单原则:当使用了黑名单原则后可能会造成权限绕过,应该使用白名单原则。
例如:以后浏览器更新了新的html标签,黑名单中没有,那么可能就会造成安全隐患
(二)最小权限原则:
按需赋予权限,按需上调(类似灰度发布模型)
(三)纵深防御原则:
1,从多个角度去设计安全方案。2,在正确的地方做正确的事。
0x01:在多维层面设计安全方案,完美构建一个安全方案,
如某广告经过十多层的过滤提取出一滴水的过程,这就是纵深防御例子。
一木桶能装多少水不在于最长的板,在于最短的板。(木桶理论)
0x02:深入理解威胁的本质,如果只是过滤一些字符,那么<<笑傲江湖>>会变成笑傲江湖,1<2会变成1 2.
大大曲解了用户本意。这就是没在正确地方做正确事。
(四)数据代码分离原则:
安全起因:程序在堆栈中对用户数据当成代码执行,混淆了代码与数据的边界。
防止:在下列例子中要对$var 进行安全处理,如过滤,编码。
$var会被解析成代码。如果<body>$var </body>
输出:
<body>
</body>
如果$var的值等于:
- <script src=http://evil></script>
就会被当做代码解析,从而造成注入隐患
不可预测原则:
威胁起因:例如某文章社区,文章采用固定顺序存储文章,那么要删除所有文章只需要一个for遍历就可以了。
这个简单,个人理解就是一些敏感数值采用随机数,加密算法,哈希算法。
篇外章:
一个安全设计得体的网站往往loginID与nickname(昵称)会区分开,nickname可以公开给所有人看,而loginID是用户私有的,只能自己看到。
小知识点:
php5.3.4往下版本的0字节截断存在文件包含漏洞。
同上版本往下$is_a()函数存在远程执行漏洞。