两位一体:论信息化中的应用安全和数据库安全

2014-01-06 11:37:37 北极星电力网  点击量: 评论 (0)
应用安全和数据库的安全就像是拼图中的拼图块,它们虽然不同,却彼此之间需要对方,缺少任何一个,都不能形成一个安全整体。如果其中一方出现安全隐患就会令整个安全防御彻底失效,如WEB应用程序存在SQL注入的时

        黑盒测试 黑盒测试是一种把软件产品当成是一个黑箱的测试技术,这个黑箱有入口和出口,测试过程中只需要了解黑箱的输入和输出结果,不需要了解黑箱里面具体是怎样操作的。这当然很好,因为测试人员不用费神去理解软件里面的具体构成和原理,测试人员只需要像用户一样看待软件产品就行了。

        例如,银行转账系统提供给用户转账的功能,则测试人员在使用黑盒测试方法时,不需要知道转账的具体实现代码是怎样工作的,只需要把自己当成用户,模拟尽可能多的转账情况来检查这个软件系统能否按要求正常实现转账功能即可。

        如果只像用户使用和操作软件一样去测试软件黑盒测试可能存在一定的风险。例如,某个安全性要求比较高的软件系统,开发人员在设计程序时考虑到记录系统日志的必要性,把软件运行过程中的很多信息都记录到了客户端的系统日志中,甚至把客户端连接服务器端的数据库连接请求字符串也记录到了系统日志中,像下面的一段字符串:

        "Data Source=192.168.100.99;Initial Catalog=AccountDB;User ID=sa;PassWord=123456;

        那么按照黑盒测试的观点,这是程序内部的行为,用户不会直接操作数据库的连接行为,因此检查系统日志方面的测试是不会做的。这明显构成了一个Bug,尤其是对于安全性要求高的软件系统,因为它暴露了后台数据库账号信息。

        有人把黑盒测试比喻成中医,做黑盒测试的测试人员应该像一位老中医一样,通过“望、闻、问、切”的方法,来判断程序是否“有病”。这比单纯的操作黑箱的方式进了一步,这种比喻给测试人员一个启示,不要只是简单地看和听,还要积极地去问,积极地去发现、搜索相关的信息。应该综合应用中医看病的各种“技术”和理念来达到找出软件“病症”的目的,具体作法如下:

        “望”,观察软件的行为是否正常;

        “闻”,检查输出的结果是否正确;

        “问”,输入各种信息,结合“望”、“闻”来观察软件的响应程度;

        “切”,像中医一样给软件“把脉”,敲击一下软件的某些“关节”。

        白盒测试如果把黑盒测试比喻成中医看病,那么白盒测试无疑就是西医看病了。测试人员采用各种仪器和设备对软件进行检测,甚至把软件摆上手术台解剖来看个究竟。白盒测试是一种以理解软件内部结构和程序运行方式为基础的软件测试技术,通常需要跟踪一个输入经过了哪些处理,这些处理方式是否正确。

        在很多测试人员,尤其是初级测试人员看来,白盒测试是一种只有非常了解程序代码的高级测试人员才能做的测试。熟悉代码结构和功能实现的过程当然对测试有很大的帮助,但是从黑盒测试与白盒测试的区别可以看出,有些白盒测试是不需要测试人员懂得每一行程序代码的。

        如果把软件看成一个黑箱,那么白盒测试的关键是给测试人员戴上一副X光透视眼镜,测试人员通过这副X光透视眼镜可以看清楚输入到黑箱中的数据是怎样流转的。

        一些测试工具就像医院的检测仪器一样,可以帮助了解程序的内部运转过程。例如,对于一个与SQL Server数据库连接的软件系统,可以简单地把程序的作用理解为:把用户输入的数据通过SQL命令请求后台数据库,数据库把请求的数据返回给程序的界面层展示给用户。可以把SQL Server自带的工具事件探查器当成是一个检查SQL数据传输的精密仪器,它可以记录软件客户端与服务器数据库之间交互的一举一动,从而让测试人员可以洞悉软件究竟做了哪些动作。

        在测试过程中,应该综合应用黑盒测试方法和白盒测试方法,按需要采用不同的技术组合。不要用黑盒测试方法和白盒测试方法来划分自己属于哪一类测试人员,一名优秀的测试人员应该懂得各种各样的测试技术和查找Bug的手段。

        最后我们谈谈新的防火墙问题。到目前为止,我们都是侧重于预防措施。但在现实世界中,我们不可能总是改编程序和环境,所以我们必须采用其他技术措施。这就是为什么会产生新的防火墙。

        防火墙用于应用程序或者监控流量的运行监控,也可以在执行运行时进行分析。防火墙可以找出攻击,并阻止尝试或修改的要求,来确保WEB服务器和数据库服务器的安全运行。

        目前不光有WEB应用防火墙和网络防火墙能防范攻击者透过应用层和网络层的攻击;“数据库防火墙”也于这两年在不断的数据库泄密事件中出现在公众的视线里,国内称之为“数据库审计”产品,这些产品能给数据库提供实时的网络存储与访问的安全。

        任何一个好的数据库安全策略都应包括监控和审计,以确保保护对象正常运行,并且运行在正确的位置上,这也是个非常耗时的过程。由于缺乏时间和工具,大多数用户对于数据库配置的检查往往也仅是抽查而已。

        这里还需要指出的是目前多数人认为“数据库审计”等同于数据库安全,事实上,数据库安全远远不是数据库审计可以搞定的,数据库审计只是数据库安全的一个很小的方面,之所以有时候对等起来,一方面是由于市场宣传导致的误导,另一方面的确是这个部分的问题比较容易产品化/工具化,技术实现相对比较成熟。数据库安全应该包括:数据库资产管理、数据库配置加固、职责分离、特权用户控制、数据库弱点扫描和补丁管理、数据库加密、数据库审计。

       最后,我们还是回到应用程序的安全以及与数据库之间的相互作用问题上。即我们必须要考虑到的问题是应用程序的安全以及与数据库之间的相互作用,尤其是对于当今流行的高度动态的和互动的网络应用程序而言。理解数据库与应用程序和系统环境之间的作用可以更加提升数据的安全性。

       有问题是客观情况,其实我们需要的不是过多的责难,而是不断改进问题本身,当我们被迫把安全做的简单时,我们就被迫直接面对真正的问题。当我们不能用表面的装饰交差时,我们就不得不做好真正的本质部分。希望本文可以让读者了解到一系列管理和风险降低方面的策略,不论你是否愿意配置数据库防火墙、进行源代码审记或者严格地控制数据库管理系统,其目的都是相同的:做好应用安全和数据安全的两位一体,保护好重要数据。


大云网官方微信售电那点事儿
免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
我要收藏
个赞