« 上一篇下一篇 »

提高数据库服务器的安全性

用户权限系统、发送数据只服务器链接服务器、运行服务器这几个方面提高数据库服务器的安全性

       1.用户和权限系统

       花费一些时间来了解你选择使用的数据库服务器的用户认证和权限系统。被攻击成功的很多的数据库都是因为人们没有时间来确保系统的安全。

       对于任何数据库服务器,你要做的第一件事就是确保数据库超级用户具有密码。

       许多数据库(包括MySQL的旧版本)将会以匿名用户身份安装,并且具有比你期望的更多权限。在了解和确认权限系统后,请确认任何默认账户的权限都是你期望的,删除任何不是你所期望的权限。

       请确认只有超级用户账户才可以访问权限表和管理数据库。其他账户只能拥有访问或修改账户本身可以访问的数据权限。

       2.发送数据只服务器

       不能发送任何未经过滤的数据至服务器。使用数据库扩展提供的各种函数,对输入字符串进行转义,我们将为自身提供基本保护。

       然而,除了依赖函数外,我们还可以对输入表单的每个域执行数据类型检查。
 
       最后,我们还可以在这些服务器上使用prepared statements语句。这些语句将自动执行转义以及单引号封装

       3.链接服务器

       有些方法可以控制与数据库服务器的链接,它们也可以保证数据库的安全性。一个最简单的方法就是限制允许连接数据库的用户。在各种数据库管理系统中,有许多权限系统除了可以用来指定用户名称和密码,还可以指定用户可以通过那些机器连接服务器。如果数据库服务器和Web服务器/PHP引擎与同一台机器,只允许来自“localhost”或那台及其所使用的IP地址进行连接是很有意义的,只允许来自那台机器的用户连接到数据库也没有问题。

       许多数据库服务器提供了通过加密的链接服务器的特性。如果必须通过开放的互联网连接数据库,绝对应该使用可供使用的加密连接。如果没有可供使用的,可以考虑使用tunneling技术产品,这样就可以保证机器间的安全连接以及TCP/IP端口通过这个安全连接路由至其他计算机,而这个流量看上去却像本地流量。

       最后,必须确保数据可服务在任何时候能够处理的连接数大于或超过Web服务器和PHP的连接数,在默认的情况下,ApacheHTTP服务器1.3.x系列能够启动150个服务器。MySQL的my.ini文件中关于连接数的默认值设置为100,这样就出现了不匹配的配置了。

       4.运行服务器

       当运行数据库服务器时我们可以采取很多种措施来保障其安全性。首先,我们不应该以超级用户身份运行它。如果服务器被攻破,这个系统就处于危险当中。事实上,如果不是特意的,MySQL不支持以超级用户身份运行。

       设置好数据库软件后,大多数程序将允许你修改数据库目录和文件的属主和权限,这样可以防止非法读操作。确认已经执行此操作,而且数据库文件属主不再是超级用户。

       最后,当应用权限和验证系统,尽量创建具有尽可能少权限的用户,在以后需要更多权限时,再给用户添加权限。

« 上一篇下一篇 »