安全测试②(设计安全方案依据原则)
以下主要内容全部来自《白帽子讲web安全》以及一部分我自己添加的补充。
1. Secure by Default原则 —— 总则
安全问题本质是信任问题,安全方案也是基于信任来设计的。
①白名单:注意白名单的配置及内容是否设置正确。
②最小权限原则:系统只授予用户必要的权限(业务所需的最小权限)。
2. 纵深防御(Defense In Depth)原则 —— 更全面、正确的看问题
①对根本问题实施针对性的安全方案。
从不同层面、不同角度对系统做出整体的解决方案。警惕安全方案中的“短板”。
②在正确的地方做正确的事。
i) 深入理解威胁本质,做出正确应对。
比如XSS防御技术的发展过程:
过滤特殊字符 -> 区分富文本和非富文本,encode非富文本 -> 对富文本做语法树分析 -> 综合方案。
ii) 把防御方案放到最合适的地方。
综上,对于一个复杂的系统而言,纵深防御是构建安全体系的必然选择。
虽说如此,就在去年看来纵深防御在现实中仍有难以落地的难言之隐。但是今年5月,工信部印发《工业互联网APP培育工程实施方案(2018-2020年)》,旨在推动工业互联网应用生态加快发展。工业生产将面临比以往任何时候都更为复杂的安全挑战,通付盾移动安全实验室作为国内最早移动安全领域研究机构,以移动安全技术为基础,提出和建立了工业互联网APP安全纵深防御技术体系。由此可见,对于纵深防御的研究将会越来越深入并以实用为目标前进。
扩展阅读:
3. 数据与代码分离原则 —— 从漏洞成因看问题
要防止让用户数据被当做代码执行。
适用于各种如XSS、SQL injection、CRLF injection与X-Path等由注入引发安全问题的场景。
扩展阅读:
4. 不可预测性原则 —— 从克服估计方法看问题
无法修复问题,但是可以使估计的方法无效。能有效地对抗基于篡改、伪造的攻击。
该方法的实现需要用到加密算法、随机数算法、哈希算法,即让攻击者无法提前预知他想要得到的数据。
如微软无法无法让系统中的软件没有漏洞,它就使漏洞的攻击方法失效,比如的增加对抗缓冲区溢出等内存攻击的功能。