secure by default 原则

发布时间:2020-10-03 02:38:33 作者:陈先生笔记
来源:网络 阅读:752

1、黑名单 白名单原则

尽可能使用白名单,不使用黑名单。例如:要做限制过滤的时候,只提供一份可信任的白名单列表,比提供一份不可信任的黑名单

列表进行过滤要有效得多。另外,在白名单中应小心* 等通配符的使用。 

2、最小权限原则

即是要注意系统只授予主题必须的权限,而不是过度授权。这样能有效减少系统,数据库,网络,应用等出错的机会。

3、纵深防御原则

两层含义:

        A:在不同层面,不同方面实施安全方案。

例如:在设计安全方案时,尽可能考虑到web应用安全,os系统安全,数据库安全,网络环境安全等不同层面。共同组成防御体系。

B:在正确的地方做正确的事情,即是要在解决根本问题的地方实施有效的针对性的方案。

例如在对用户输入的html进行过滤时,要先进行语法树的分析,而不是粗暴的进行< 等过滤,以免造成用户本意想表达如1<2的意思。

4、数据与代码的分离

像HTML injection  sql injection  SRLF injection  X-PATH injection  均可以根据该原则设计出真正的解决方案。

以sql 为例,产生的原因正是因为无法判断用户的输入和该执行的sql语句而直接造成的损失。

如 select fieldlist from table where field ='  <input>  ';

当输入为:

select fieldlist from table where field ='  'anything' or 'x'='x'  ';  这时候整个数据表的数据都将被返回。

5、不可预测性原则

数据与代码分离是从漏洞的成因上做出防御,而不可预测性原则则是从克服***方法的角度看待问题。这是一种即使无法修复代码,但是让***变得无效

的成功的防御。

比如:让程序的栈基址变得随机化,使***程序无法准确猜测到内存地址,而大大的提高***的门槛。再比如在一些应用系统中,使用随机的id。那么如果***者再

想使用类似于

for(int i=0;i<1000;i++){

delete(url="xxx?id="+i);

}

这种方法的***将无效,起码是先爬取id的值,再进行delet操作。同样的,现在利用token,利用加密算法,随机算法,哈希算法等,其实都可以找到这条原则的影子。


推荐阅读:
  1. C++ 读写文件安全又简洁的简单实例
  2. 10个常见的数据库安全问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

安全 %d sec

上一篇:Python3中bytes类型转换为str类型

下一篇:springmvc 参数绑定总结

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》