保证你数据层的安全

ZDNet软件频道 时间:2003-08-22 作者:ZDNet China |  我要评论()
本文关键词:
本文里,我将要向你演示如何设计保证程序数据层的安全,并给予它在恶劣环境中生存所需要的工具。
本文译自Builder.com,未经许可请勿转载对于很多开发人员来说,创建一个应用程序和建立一个家庭非常相似。商业层(Business tier)就像是年纪最大的孩子:成熟而又有责任心,它知道如何处理所有的事情,并且善于告诉人们该做什么。表示层(Presentation tier)就像年纪最小的孩子。它是家里的婴儿,可爱、光彩照人,也是众人视线之所在。数据层(Data tier)常常看起来像是个年龄居中的孩子:是家庭的中流砥柱,但是很不引人注目、不安全,需要自己来照顾自己。在本文里,我将要向你演示如何养育你这个年龄居中的孩子——数据层,并给予它在恶劣环境中生存所需要的工具。

限制数据访问

当你的数据库连接到Internet之后,你永远都不能百分之百地保证其安全。你的目标是将暴露在外的东西减到最小,这样才能够减少入侵者取得访问权的机会。要游离于安全威胁是很困难的,但是还是有一些非常基本的方式,能够让你保证数据的安全和编写可维护性更强的代码。

入侵者进行攻击的最常见方法叫做“流量注入攻击法(injection attack)”。这些攻击利用你的用户界面和直接查询方法,将异常的信息传递给你的数据库。通过直接查询,我的意思是说,你的代码就像Listing A里的代码那样。

这段代码是直接对数据库执行的。现在,如果你的Web应用程序(或者真正进行这项任务的任何应用程序)有一个要求填写你姓氏的注册系统,那么攻击者就能够将DELETE * FROM Users输入到这个字段里,并提交这个表单。当所有的用户被删掉之后,你就最好希望自己每天晚上都进行了备份。

但是,这些攻击能够被轻易地挡住,只要你对自己的表格使用了带有参数的存储过程,也叫做SPROC,而不是使用直接查询。你除了能够从执行预编译程序所获得的性能提高之外,使用带有参数的SPROC还会让你的应用程序获得更高程度的抽象化。你可以更改自己表格的名称或者数据处理程序,而不需要改变数据访问层的任何东西,因此也就不需要重新编译和重新部署你的应用程序了。更进一步说,如果有人试图将SQL陈述式导入你的表单里,那么SPROC就会提示一个句法错误,并停止继续执行。这是保护你的资源免受攻击最简单的方法,也是我最强烈的建议。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134