WEB应用安全设计思想
时间:2025-04-04
时间:2025-04-04
建设领域推广应用新技术管理规定
==Ph4nt0m Security Team==
Issue 0x03, Phile #0x07 of 0x07
|=---------------------------------------------------------------------------=|
|=-------------------------=[ WEB应用安全设计思想 ]=-------------------------=|
|=---------------------------------------------------------------------------=|
|=---------------------------------------------------------------------------=|
|=--------------------------=[ By axis ]=----------------------------=|
|=-----------------------=[ <axis#http://www.77cn.com.cn> ]=------------------------=|
|=---------------------------------------------------------------------------=|
[目录]
1. 前言
2. 信任关系的划分是安全设计的基础
3. 访问控制是安全设计的核心
4. 数据与代码分离的思想是安全设计的原则
5. 最佳实践一:Secure By Default
6. 最佳实践二:Unpredictable
7. 总结
8. 参考资料
一、前言
我一直在思考的一个问题,就是安全问题的本质到底是什么。我们见到过各种各样的攻
击,也做过各种各样的防御方案。有的方案好,有的方案却有缺陷。那么好的方案好在哪里,
为什么就能够抵抗攻击,到底什么特性使得攻击者的成本升高了,使得风险降低了。这中间是
否有什么共同的东西呢?
经过一段时间的思考和观察,我初步得出了一个结论:安全问题的本质是信任问题。
二、信任关系的划分是安全设计的基础
安全问题的本质是信任问题。
提到这个,不得不说一个信任域的概念。当系统信任某些单元时,由这些单元组成的一片
区域可以称之为信任域。在数据流图或者是拓跋图上,都可以用一个边界把这个域给界定出
来。我说的这个概念,是一个广义的概念,任何存在信任关系的系统中,都可以存在信任域。
比如一个机场,人们要登机,必须要先经过安检,那么过了安检后,在候机厅候机,就可以把候机厅看做是一个信任域。因为对于机场来说,候机厅内的区域是可信的。而候机厅外的
区域是不可信的。
机场的安检就是对跨越信任边界的一个检查。会检查有没有刀具,有没有液体、打火机
等。
那么安全问题是怎么发生的呢?首先是没有合理的划分信任域,或者是信任域比较混乱。
建设领域推广应用新技术管理规定
其次就是信任边界的检查出现问题的时候。这些问题可以是检查不够充分,或者是检查没有
覆盖到整个信任边界。
而这些问题导致的结果,都是产生信任危机,也就产生安全问题了。
对于传统的内存攻击来说,一个字符串超出了分配给它的指定空间长度,也可以看做是对
信任域的破坏,或者是缺乏审计。
所以信任域和信任边界是非常重要的东西。在做安全方案的时候,首先就要依据资产等
级,去划分信任域和信任边界。
我们要知道我们到底要保护什么东西,然后去分析有什么途径能够达到这些要保护的信
任域。
在圈子里经常讲的一个笑话就是,怎么做到安全?拨网线最安全。首先,这是一个谬论,因为网线拔掉后,可用性会受到影响。安全方案应该尽可能的避免牺牲可用性为代价,应该是为
业务和应用服务的。拔网线是一种舍本逐末的做法。
其次,拔了网线真的就安全了吗?
我们把物理隔绝的系统看做是一片信任域,那么它会信任什么?如何与外界做数据交互?
简单的头脑风暴一下,就可以知道,这样的系统,可能会与外界发生数据交互的情况:
1. U盘有可能拷贝数据
2. 无线网卡有可能自动连接
3. 可能有人为的手工操作
那么以上这三条,都是有可能穿越我们的信任边界,产生数据流动的行为。原本物理隔绝
就是为了不信任外界的一切,产生数据流动后,就可能破坏信任关系。
再回过头来看上面的机场的案例,把客流量看做是数据流量,它将穿越一道信任边界,进
入候机厅这个信任域,所以机场有安检,来专门检查这个穿越信任边界的数据。安检就是机场
的安全方案。
-tips--------------------------------------------------------------------------
如果A信任B,或者A依赖于B,则B可以决定A的安全。常见的案例比如软件中使用了第三方
包,则第三方包可以决定A中相关数据的安全。
-------------------------------------------------------------------------------
某些视频播放软件使用了很多第三方的库来解析很多不同的视频格式,当第三方库出现
安全问题时,则直接导致这些视频播放软件也出现安全问题。
所以安全域的划分是安全方案的基础,划分了安全域后,才能比较有针对性的设计安全方
案。
三、访问控制是安全设计的核心
访问控制不仅仅包括权限。权限仅仅只是访问控制的一部分。这里我们通常所说的权限
都是垂直权限控制,它一般是基于角色的(role based)。
比如一个论坛里面,有匿名用户,他们可能看不了帖子的内容。有普通用户,他们能看帖
子的内容。有管理员,他们能删帖子,能置顶帖子。
建设领域推广应用新技术管理规定
那么匿名用户、普通用户、管理员就是三个不同的 …… 此处隐藏:6624字,全部文档内容请下载后查看。喜欢就下载吧 ……