防止直接访问数据库

时间:2013-10-27 13:49:46

标签: php mysql security

我正在考虑保护PHP应用程序的方法。我想在数据库服务器端(MySQL)上设置一个具有有限权限的用户,并在PHP应用程序中为所有数据库请求配置此用户。

现在的问题是,有权访问源文件的人(例如员工)可以使用配置的凭据直接连接到数据库(例如通过phpmyadmin)。数据库只能通过PHP应用程序进行更新。

我想建立一个机制(触发器或在mysql端或php端或两者上的任何可能),它检查从哪个客户端对数据库的请求来自,从而忽略它。有可能吗?还有其他方法可以考虑这个问题吗?

此致

2 个答案:

答案 0 :(得分:2)

  

现在的问题是,有权访问源文件的人(例如员工)可以使用配置的凭据直接连接到数据库(例如通过phpmyadmin)。

这不是你可以完全防止的。如果某人有权访问源文件,无论如何都会被搞砸。

创建某些保护通常采取的措施是

  • 以无法从服务器外部访问的方式配置mySQL。请参阅Restricting MySQL connections from localhost to improve security,它也应该在防火墙级别上完成(与系统管理员联系)

  • 让Web应用程序使用数据库用户帐户,该帐户在访问应用程序需要运行的任何表和功能时受到限制。

答案 1 :(得分:1)

如果您需要设置某个用户可以登录的域,您可以在授予该用户权限时指定:

在您的数据库中授予所有特权。*至'username'@'192.168.10.12'   通过'goodsecret'确认;

这会将连接限制为192.168.10.12,即使密码是从其他位置提供的,也不适合此grant命令。