第9章Web数据库安全性 本章内容 数据库安全概述 ● Access数据库可能被下载的漏洞 ●SQL数据库安全 数据库的备份 IS的安全性分析 ASP漏洞及解决方法 IS、ASP的安全问题一点建议
第9章 Web数据库安全性 本章内容: l 数据库安全概述 l Access数据库可能被下载的漏洞 l SQL数据库安全 l 数据库的备份 l IIS的安全性分析 l ASP漏洞及解决方法 l IIS、ASP的安全问题一点建议
近年来,安全问题逐步成为企业信息主 管关注和讨论的焦点。 个好的安全解决方案离不开适当的安 全目标和策略,而围绕企业重点资产和高风 险威胁所进行的风险评估则是规划的基础 在规划企业安全时会考虑众多威胁,绝 大多数企业甚至是聘请的安全公司,往往把 注意力集中于网络和操作系统安全,而容易 忽视最重要的数据库安全 数据库安全是一个广阔的领域,它作为 操作系统之上的应用平台,其安全与网络和 主机安全息息相关
近年来,安全问题逐步成为企业信息主 管关注和讨论的焦点。 一个好的安全解决方案离不开适当的安 全目标和策略,而围绕企业重点资产和高风 险威胁所进行的风险评估则是规划的基础。 在规划企业安全时会考虑众多威胁,绝 大多数企业甚至是聘请的安全公司,往往把 注意力集中于网络和操作系统安全,而容易 忽视最重要的数据库安全。 数据库安全是一个广阔的领域,它作为 操作系统之上的应用平台,其安全与网络和 主机安全息息相关
91数据库安全综述 911为何需要数据库安全? 在计算机世界,数据库显然存放着在线资源中 最真实和最有价值的那部分资产。在数据库中, 这些数据一旦遭受安全威胁将带来难以想象的严 重后果 企业对数据的一个最基本要求,就是要确保 它们能够在任何时候,被任何授权用户方便、高 效地访问。为此,企业会考虑创造多种对数据的 访问通道,并确保它们的安全。但是,这些通道 是动态的,即当网络扩展时,它们随之创建或改 变,并可能在未察觉和任何保护情形下不再可用 通过对数据库自身的安全保护,企业将可以在数 据受到真正的威胁前设置最后一道防御屏障
9.1 数据库安全综述 9.1.1 为何需要数据库安全? 在计算机世界,数据库显然存放着在线资源中 最真实和最有价值的那部分资产。在数据库中, 这些数据一旦遭受安全威胁将带来难以想象的严 重后果。 企业对数据的一个最基本要求,就是要确保 它们能够在任何时候,被任何授权用户方便、高 效地访问。为此,企业会考虑创造多种对数据的 访问通道,并确保它们的安全。但是,这些通道 是动态的,即当网络扩展时,它们随之创建或改 变,并可能在未察觉和任何保护情形下不再可用。 通过对数据库自身的安全保护,企业将可以在数 据受到真正的威胁前设置最后一道防御屏障
91.2常见的数据库安全问题及原因 虽然数据库安全的需求很明显,但多数企业还 是不愿在发生了无可挽回的事件之前就着手考虑 和解决相关的安全问题,让我们考查以下可能危 及数据库安全的常见因素 (1)脆弱的帐号设置。 (2)缺乏角色分离。 (3)缺乏审计跟踪 (4)未利用的数据库安全特征
9.1.2 常见的数据库安全问题及原因 虽然数据库安全的需求很明显,但多数企业还 是不愿在发生了无可挽回的事件之前就着手考虑 和解决相关的安全问题,让我们考查以下可能危 及数据库安全的常见因素: (1)脆弱的帐号设置。 (2)缺乏角色分离。 (3)缺乏审计跟踪。 (4)未利用的数据库安全特征
91.3数据库安全管理原则 个强大的数据库安全系统应当确保其中信息 的安全性并对其有效地控制。下面列举的原则有 助于企业在安全规划中实现客户利益保障,策略 制订以及对信息资源的有效保护 (1)管理细分和委派原则。 (2)最小权限原则。许多新的保密规则针对对特 定数据的授权访问 (3)帐号安全原则。用户帐号对于每一个数据库 联接来说都是必须的。帐号应遵循传统的用户帐 号管理方法来进行安全管理。 (4)有效的审计。数据库审计是数据库安全的基 本要求
9.1.3 数据库安全管理原则 一个强大的数据库安全系统应当确保其中信息 的安全性并对其有效地控制。下面列举的原则有 助于企业在安全规划中实现客户利益保障,策略 制订以及对信息资源的有效保护。 (1)管理细分和委派原则。 (2)最小权限原则。许多新的保密规则针对对特 定数据的授权访问。 (3)帐号安全原则。用户帐号对于每一个数据库 联接来说都是必须的。帐号应遵循传统的用户帐 号管理方法来进行安全管理。 (4)有效的审计。数据库审计是数据库安全的基 本要求
9.2 Access数据库可能被下载的漏 般来说,在提供asp权限的Web 服务器上不可能提供代为设定DSN的 服务,使用的 ACCEsS mdb数据库可 能被人下载,因此asp程序使用的数据 库通常都局限在使用mdb数据库,而 mdb远端数据库所在的位置是使用在第 8章数据库连接方法中讲到过的DSN LESS方法直接在asp中指定的,方法如 下
9.2 Access数据库可能被下载的漏 洞 一般来说,在提供asp权限的Web 服务器上不可能提供代为设定DSN的 服务,使用的ACCESS mdb数据库可 能被人下载,因此asp程序使用的数据 库通常都局限在使用mdb数据库,而 mdb远端数据库所在的位置是使用在第 8章数据库连接方法中讲到过的 DSNLESS方法直接在asp中指定的,方法如 下 :
constr="DBQ=+server mappath("database/source. mdb")+ DefaultDir- DRIVER=(Microsoft Access Driver( mdb)) Driverld-=25: FIL= Access, ImplicitCommitSync=Yes: MaxB uffer Size=512 MaxScanRows-8, PageTimeout=5 Safe Transactions=0; Thread s=3: UserCommitSync=Yes 正如前文所言,在这种情况下mdb库很可能被他 人下载,从而造成诸如密码等的泄露。所以,应 该采取一定的措施严禁code.asp之类的程序,限制 mdb的下载
正如前文所言,在这种情况下mdb库很可能被他 人下载,从而造成诸如密码等的泄露。 所以,应 该采取一定的措施严禁code.asp之类的程序,限制 mdb的下载
在用 Access做后台数据库时,如果有人通过 各种方法知道或者猜到了服务器的 Access数据库 的路径和数据库名称,那么他就能够下载这个 Access数据库文件,这是非常危险的。比如:如 果 Access数据库 book mdb放在虚拟目录下的 database目录下,那么有人在浏览器中打入: http://someurl/database/book.mdb 如果 book mdb数据库没有事先加密的话,那 book. mdb中所有重要的数据都掌握在别人的手中 解决方法: (1)为数据库文件名称起个复杂的非常规的名 字,并把它放在多级目录下
在用Access做后台数据库时,如果有人通过 各种方法知道或者猜到了服务器的Access数据库 的路径和数据库名称,那么他就能够下载这个 Access数据库文件,这是非常危险的。比如:如 果 Access 数 据 库 book.mdb 放 在 虚 拟 目 录 下 的 database目录下,那么有人在浏览器中打入: http://someurl/database/book.mdb 如果book.mdb数据 库没有事先加密的话, 那 book.mdb中所有重要的数据都掌握在别人的手中。 解决方法: (1)为数据库文件名称起个复杂的非常规的名 字,并把它放在多级目录下
(2)不要把数据库名写在程序中。 (3)使用 ACCESS来为数据库文件编码及加密 首先在选取“工具->安全->加密/解密数据库,选 取数据库(如: employer.mdb)”,然后按确定, 接着会出现“数据库加密后另存为”的窗口,存 为: employer. mdb。接着 employer. mdb就会被编 码,然后存为 employer.mdb 要注意的是,以上的动作并不是对数据库设置密 码,而只是对数据库文件加以编码,目的是为了 防止他人使用别的工具来査看数据库文件的内容 接下来为数据库加密。首先以打开经过编码了的 employer. mdb,在打开时,选择“独占”方式
(2)不要把数据库名写在程序中。 (3)使用ACCESS来为数据库文件编码及加密。 首先在选取“工具->安全->加密/解密数据库,选 取数据库(如:employer.mdb)” ,然后按确定, 接着会出现“数据库加密后另存为”的窗口,存 为:employer1.mdb。接着employer.mdb就会被编 码,然后存为employer1.mdb。 要注意的是,以上的动作并不是对数据库设置密 码,而只是对数据库文件加以编码,目的是为了 防止他人使用别的工具来查看数据库文件的内容。 接下来为数据库加密。首先以打开经过编码了的 employer1.mdb,在打开时,选择“独占”方式
然后选取功能表的“工具~>安全->设置数据库密 码”,接着输入密码即可。 为 employer. mdb设置密码之后,接下来如果 再使用 Accessi数据库文件时,则 Access会先要求输 入密码,验证正确后才能够启动数据库 不过要在ASP程序中的 connectior对象的open方 法中增加PWD的参数,这样即使他人得到了 employer. mdb文件,没有密码他是无法看到 employer. mdb的。不过,实际上已经有人编写出 专门破解 access数据库密码的程序,因此在使用时 应予以注意
然后选取功能表的“工具->安全->设置数据库密 码” ,接着输入密码即可。 为employer1.mdb设置密码之后,接下来如果 再使用Access数据库文件时,则Access会先要求输 入密码,验证正确后才能够启动数据库。 不过要在ASP程序中的connection对象的open方 法中增 加PWD 的参 数, 这样即 使他 人得到 了 employer1.mdb 文 件 , 没有密码他是无法看到 employer1.mdb的。不过,实际上已经有人编写出 专门破解Access数据库密码的程序,因此在使用时 应予以注意