真实有效的解决方案
4. 真实有效的解决方案:
所谓“知己知彼,百战不殆”,通过对安全漏洞的分类,我们清楚的知道了软件中可能产生的各种各样的安全隐患,那么我们只要做好充分的主动的预防工作,消除软件中的安全隐患,这样我们的软件就可以抵御黑客或恶意的内部人员的攻击了。那么怎么做才可以彻底消除这些隐患呢?什么样的方案才是真实有效的呢?
软件安全涉及软件工程、编程语言、网络、数据库、安全工程等各个领域各个层次。涉及面非常广。这使得做好软件安全防御工作需要有很深的专业知识,管理技能,同时也要有非常丰富的实际经验。著名的软件安全专家,美国著名的软件安全咨询Cigital公司CTO Gary Mc Graw博士一直从事软件安全的研究,可以说是软件和应用程序安全领域的世界级权威。他建议,解决软件安全主要可以从如下几个方面入手:
4.1.Applied Risk Management Framework(实用的风险管理框架)
我们常说的风险管理和风险分析都是在软件设计的阶段,软件架构级的风险分析。分析我们的设计可能给软件带来什么样的风险。虽然它是风险管理框架中最为重要最实际的一个关键的阶段,但它不是风险管理的全部。因为我们的软件安全风险是在整个软件开发生命周期中慢慢地产生的。而不仅仅在设计阶段。所以贯穿整个开发周期的风险管理才尤为重要。所以我们称之为“风险管理框架”。
风险管理常常被人们叫做“black art” 。这是因为风险管理有部分像占卜、算命一样,在那里对未来要发生的事进行预测。又有部分像数学,有着一定的逻辑推理。给人一空洞,没有真凭实据的空谈的感觉。然而一个成功的风险管理,它是比做任何一个业务级的决策需要的依据都要多的多。首先我们必须要收集充分的用来做决策的数据,其次我们要有软件缺陷、威胁、影响和可能性的知识作基础,还要有丰富的软件风险管理的经验,综合起来,这样才能做好整个开发过程的风险。从而降低风险甚至消除风险。总和起来风险管理也有五个阶段的活动:
(1)Understand the Business Context(了解业务需求内容)
(2)Identify the Business and Technical Risks(确认业务风险和技术风险)
(3)Synthesize and Rank the Risks(综合风险并划分等级)
(4)Define the Risk Mitigation Strategy(确定降低风险策略)
(5)Carry out Fixes and Validate(实施修复并检验结果)
4.2.Software Security Touchpoints(软件安全开发切入点)
提高软件安全的最好的一个种方法就创建安全的软件——“Building Security In”。今天的软件都有明显的安全需求的特征。我们在完成软件需求的功能的同时,也要建立安全需求。但是建立安全不等于就是简单地加入SSL(Security Socket Layer)就可以的。第一因为安全问题是整个系统级的问题,它包括:安全机制(如:访问控制)设计安全(如:坚固的设计使攻击变得困难)编码安全(如:Buffer Overflows)等很多方面。有时候这些方面是相互重叠的,但有时候又不是。第二因为安全问题是一个慢慢地连续不断地出现的一个问题。在开发周期的每一个阶段都有可能引入安全隐患,甚至是我们选择的工具,选择的实现技术,数据库等都可能引入新的问题。这也就是为什么安全问题是贯穿软件开发整个生命周期的主要原因。所以要想解决安全问题从原来的被动的救火方式转换到主动的防御式,就是时刻记
住——“Building Security In”。
(1)Code Review(代码重审)
(2)Architecture risk analysis(软件架构风险分析)
(3)Penetration testing(渗透测试)
(4)Risk-based security tests(基于风险的安全测试)
(5)Abuse Case(最坏情况处理)
(6)security requirements(安全的需要)
(7)security operations(安全操作)
(图3:七个切入点在开发周期的分布图)
如上图3可出从这七个方面入手可以较为全面的考虑安全构建软件。这七个方面分布在软件开发周期中的各个阶段。因此我们可以相信,只要我们认真做到了这七个方面,我们的软件的安全问题应该可以得到解决。
4.3.Knowledge(知识)
软件安全的最大的挑战是我们缺乏在软件安全方面的知识和经验.因此我们需要,也非常有必要给我们的开发人员、设计人员,分析人员更多的有关软件安全的知识的培训,以期他们具备丰富的软件安全的知识.
5. 总结:
今天的软件已经成为我们生活重要而不可缺少的组成部分,它给我们带来便利的同时也带来了新的问题。黑客们常常很容易地获取了我们重要的信息,给我们带来巨大的经济损失。传统的安全防御方式慢慢变得不能适应今天的要求。提出新的解决软件安全问题的方法迫在眉睫,“Building Security In”这一理念的提出,使我们找到了答案。对安全问题进行汇总,分类,然后在软件开发的过程中时刻考虑安全问题。有理由相信,这样的方法能够提高软件本身的防御黑客攻击的能力.
网友评论