《白帽子讲web安全》读书心得(一)
一,安全的哲学
1.一切事物均处于相对运动的状态下,没有一劳永逸的安全解决方案,正所谓生于忧患,死于安乐,我们应该学会以运动的眼光看待问题。
2.安全的本质是什么?信任。举个例子吧,女孩子们爱说一句话:"我想找一个可以给我安全感的男朋友",因为他可以保护你,对吧。可仔细想想,我们所说的“安全感”完全是基于对男朋友的信任,一旦男朋友变的不可信任,我们的安全就无法保证了,所以说安全的本质是信任,信任划分出了信任边界和信任域。
3.道哥的一句话很深刻“互联网本是安全的,自从有了研究安全的人以后,就变得不安全了”,世上本没有路,走的人多了,也就成了路。
二,web安全发展史
1.黑客精神兴起,然后衰败,同时黑产链兴起,发展,然后应该经过很长时间后会衰败吧。历史么,没有什么新鲜事,最初事物的出发点是好的,可天下熙熙,皆为利往,很多人看到了互联网安全的机遇,在利益的污染下,好的事物衰败,滋生了黑产链,盛极而衰,自然之理,没什么好说的。
三,安全三要素
1.机密性,这就好比我存放绝密资料时,外边套了个无法打开的玻璃壳,的确对方无法直接把文件取走,可也没必要去打开,从外边就直接得到了信息。
2.完整性,信息没有被篡改之类的,大人和犬人的意思失之毫厘,差之千里。
3.可用性,随取随用,最经典的是拒绝服务攻击。有限的承载能力下,资源全被恶意占据,那么正常的用户怎么办,没办法了呗。
4.最重要的就是这三者,后续引申的其他概念没那么重要。
三,安全评估流程
1.处理步骤:资产等级划分→威胁分析→风险分析→提出处理方案。
2.前一阶段的成果决定后一阶段所进行的工作,像接力赛,前一个人跑了多远,决定后一个人跑的多快。
3.资产等级划分:这个阶段确定我们的目标是什么,也就是客户最看重的信息是什么,在web上,客户产生业务,业务产生信息,有些公司最看重的是客户信息,有些看重的是员工信息。明白这个以后,把资产划分等级,确定信任域与信任边界,这就好比是我们玩即时星际争霸,应该在哪个地方重兵把守,哪些地方可有可无。
4.威胁分析:威胁为对我们可能产生危害的来源,而风险直接与损失挂钩,这点需要区分。一般威胁分析采用威胁建模或头脑风暴,模型提供个参考而已,用的时候再看,现在记住以后也会忘,重要的是解决问题的思想,细枝末节无所谓,这是我读书的一条原则。
5.风险分析:风险=威胁的严重程度✖发生的可能性,有些威胁危害大是大,可在某些特定环境下发生的可能性很低。好比我在内地建房子,却为了防止台风作了大量准备,这显然很愚蠢。预算是有限的,好钢用在刀刃上,具体情况具体分析。
6.提出处理方案:处理方案也有讲究,安全是产品的一个自身属性而非附加属性,有些厂商为了安全牺牲了产品的体验效果,有些为了效果牺牲了安全,都是错的。处理方案应该,在不影响用户体验的前提下,为用户的安全提供最大程度的保障。把安全检测贯穿产品生产的始终,安全检测自身也得与时俱进,这样的话,生产的产品应该是没有什么大问题。
7.一切分析都是动态的,综合所有因素考虑问题。
四,如何构建一个好的安全方案
1.总则:坚持白名单原则,好比森林中有个小兔子的家,黑名单就好像,我不让老虎,狮子......进我家,可我忘了把狐狸也加进来,于是就被吃掉了。白名单就好像小兔子只让狗,大象什么的无害动物进家,一般不会有什么危险。一定吗,不一定,如果狗和狐狸串通好了呢?安全体系的架构基于一定条件的信任,条件不可信任的时候,则安全体系分崩离析。
2.用户输入与代码段分离:几乎所有注入类型漏洞都是这方面出了问题,把用户的恶意输入作为代码段执行,我感觉这相当于给了用户一定编写代码的权限。输入与代码段分离,我让你干什么,你就得干什么,我给了你赋值的权利,你就没法执行脚本。
3.纵深防御原则:全方位,多角度的看待问题,我感觉这个和计算机网络体系结构的假设差不多,把复杂问题拆解开来,把一套防御体系拆成多层,每层执行特定的任务,并且用最适合的方式执行,不能用锤子锯木头。再把每层用特定的接口链接,成为一个整体,不同角度,多层次的看待问题。
4. 不可预测原则:我感觉这个类似于目录遍历,我们使用加密等各种技术,防止攻击者猜解文件,或者是其他内容的逻辑结构,不然规律太过易于寻找,很简单的一段代码,很容易复现的方式,搞垮我们很容易。
5.最小权限原则:限制工程师的权限,防止它在不经意间犯错,要知道,安全问题永远无法解决的一个重要原因就是人的行为的不确定性。

浙公网安备 33010602011771号