(本文1262字,阅读时间3分钟)
虽然很多漏洞出现了十几年,甚至几十年,但并不会因为漏洞的历史悠久,会在程序员的记忆基因中刻下永恒的记忆。恰恰相反,大部分程序员及每年新进程序员对安全的原理,攻击,防御都是一穷二白,而且缺乏意识去学习安全技能,他们重复编写着可被黑灰产利用的代码漏洞,导致信息安全、网站可用性、欺诈等时常发生。
学习Web安全相关的技术及原理,主要是工作需要及个人兴趣爱好,把它写下来,是希望用最简洁,最容易理解的文字,给有需要的同学,当然最重要的是通过写的方式倒逼自己重新总结和提炼,促进自己更加深刻地重新理解。
个人安全观的启蒙来自吴翰清,江湖人称“道哥”写的《白帽子讲Web安全》,也非常幸运邀请道哥做过分享,能有机会当面交流。关于未来我的安全篇中的内容以《白帽子讲web安全》的读后感为主,同时有一些延续的思考和学习,毕竟读透一本书,运用书中的思想融会贯通地运用在系统设计上,才算是真正掌握,我还需要继续努力。当然对安全感兴趣的话,买本《白帽子讲Web安全》仔细品读也是个不错的选择。
互联网诞生时是安全的,但是随着研究安全的人多起来后,也就变得不安全了,随后因为工作需要出现了白帽子和黑帽子,黑帽子想着破坏和攻击,白帽子想着防御,攻防之战从未停止过,意味着当下或者未来,我们所处的网络环境只能是相对安全,不是绝对安全的,这就要求我们做安全方案设计时候,需要掌握3个核心设计理念:
1.避免刻舟求剑
微软在推出vista操作系统时,曾信誓旦旦地保证这是有史以来最安全的操作系统,但是在2008年的pwd2own(每年一度可以攻击任何操作系统的一次盛会)的安全竞赛上被黑客给攻击成功了,这说明了一个以不变的防御方案对抗不断发展的攻击技术,容易犯刻舟求剑的错误,从微观上讲,某一时期可能某一方占了上风,从宏观上讲,某一时期的防御和攻击方案不可能永远长期有效下去,防御和攻击是一个互相促进的辩证关系。
2.认清安全问题的本质
高等级的信任域流向低等级的信任域是不需要做安全检查的(比如离开机场不需要安检),从低等级的信任域流向高等级的信任域是需要通过信任边界的安全检查的,一切安全的方案设计的基础,都是建立在信任的关系之上的,我们必须相信一些东西,必须有一些最基本的假设,安全方案才可以建立,否则安全方案就像无源之水,无根之木,无法设计。比如:把文件放在抽屉里安全的前提是锁匠不会私藏钥匙、木匠不留抽屉后门。所以把握住信任条件的度,使其恰到好处,正式设计安全方案的难点所在,也是安全这门学问的艺术所在。
3.把握安全的三要素
机密性:要求保护的内容不能被泄露,eg.文件放在透明盒子里,可能拿不到盒子中的文件,但是从外部可以看到文件的内容,如果此时加个封面,就可以避免;
完整性:要求保护的内容不能被篡改,eg.康熙的遗诏“传位十四子”的传说;
可用性:要求保护的资源是随需而得,eg.不能因为dos攻击导致服务不可用;
避免刻舟求剑、明确系统信任边界、把握安全三要素是我们在做安全架构设计时需要非常关注的,遵循这些设计理念后,在去运用好安全设计原则,提高系统的安全水位,是我们追求的目标。下一篇在来总结下安全设计原则。