除了需要保持软件的最新版本,还可以采取一些措施保持数据库的安全性。当然,与介绍Web应用的安全性相比较,要完整地介绍每一种数据库服务器的安全性,都将需要一整本书。这里将给出一些需要注意的常规策略。
16.6.1 用户和权限系统
花费一些时间来了解你选择使用的数据库服务器的用户认证和权限系统。大量的数据库攻击能够成功都是因为人们没有花时间来确保系统的安全。
请确认所有账户都有密码。对于任何数据库服务器,你要做的第一件事情就是确保数据库超级用户(root)具有密码。请确认这些密码没有包含任何可以从字典里找到的单词。即使是类似于44horseA的密码安全性也要低于类似于[email protected]这样的密码。对于担心难于记住密码的用户,可以考虑使用特定语句所有单词的第一个字母以及特定的大小写模式作为密码,例如IwTbOtlwTwOt取自于Charles Dickens的小说《A Tale of Two Cities》中的"It was the best of times,it was the worst of times"。
许多数据库(包括MySQL的旧版本)将会以匿名用户身份安装,并且具有比你期望的更多权限。在了解和确认权限系统后,请确认任何默认账户的权限都是你期望的,删除任何不是你所期望的权限。
请确认只有超级用户账户才可以访问权限表和管理数据库。其他账户只能拥有访问或修改账户本身可以访问的数据库权限。
要测试权限系统,可以执行如下操作来验证相关的错误信息:
■不指定用户名称和密码连接数据库。
■不指定root用户的密码连接数据库。
■使用root的错误密码连接数据库。
■以特定用户身份连接数据库,尝试访问该用户不能访问的表。
■以特定用户身份连接数据库,尝试访问系统数据库或权限表。
在尝试了以上操作后,你才能确认你的系统验证功能能够对系统提供足够的保护。