通过分离它们来保护MySQL与PHP

时间:2011-06-09 13:16:42

标签: php mysql security

我设置了两台服务器,一台用于MySQL,另一台用于PHP。 PHP为用户提供服务并在nginx之上运行。带有MySQL的第二台服务器只能从PHP Web服务器的同一IP访问。

这样我想在可能的入侵者和他能够访问存储在MySQL数据库中的关键客户数据之间设置一个额外的障碍。

但是,如果某人是打破我的PHP服务器,他可以访问所有的PHP文件,因此也可以通过MySQL服务器,因为PHP的所有配置文件都在PHP服务器上。

解决这个问题的好方法是什么?我知道这将是最糟糕的情况,但是,是否有办法更安全地存储我的配置文件?

6 个答案:

答案 0 :(得分:1)

您可以使用IonCube或类似产品加密PHP,这样就很难获得存储在php文件中的任何文本。

之后,您通过SSL连接到MySQL,因此潜在的黑客无法使用tcpdump并通过在网络接口上侦听来查看连接字符串是什么。

这样你就完全隐藏了你的数据库凭证。

答案 1 :(得分:1)

如果有人要在PHP服务器中闯入,他们也可以访问MySQL服务器,但如果他们实际上没有进入,但只能访问源文件(因为PHP出现故障或出现故障) .htaccess)如果你把你的配置文件和你的大部分源文件都放在你的www根目录之外,你可以防止很大的破坏。

许多网站都有一个整个网站运行的入口点文件。如果只有条目文件(通常是index.php)在de document根文件夹中,并且所有包含的php文件都被移动到一个文件夹中,那么任何能够读取文件或获取目录列表的人仍然看不到这些文件。

但是,如果有人真正闯入你的服务器,那也无济于事。最好的办法是不要让这种情况发生。

答案 2 :(得分:1)

您可以使用客户的密码加密客户数据。 PHP服务器和MySQL服务器都不知道该密码。但是你可以从顾客那里获得它。因此,当客户登录时,他们会向您发送身份验证密码。在那个短暂的时刻,您将拥有可用于在将数据发送给他时解密数据的密码。

这样,如果您的整个网站遭到入侵并且黑客拥有您的密码,数据库访问权限以及所有内容,他仍然无法读取或修改客户的数据。

答案 3 :(得分:0)

PHP运行的用户需要能够访问数据库。所以,如果有人获得php用户权限,他也可以访问数据库是正常的。

然后应用基本安全建议。仅限访问webserver用户的php文件,并仅向mysql用户提供所需的权限。最重要的是,不要忘记备份网站和数据库。

答案 4 :(得分:0)

我想说有一种解决方法,但如果PHP可以访问服务器,那么有权访问该源的任何人都有关于如何访问其他服务器的逐步说明。一旦你的PHP文件被泄露,限制可以访问数据库的机器真的是你唯一的希望。

当然,您也可以将文件的读取权限限制为http / www-dev / apache(无论是读取您的PHP),但如果它们确实危及您的服务器,则无法保证它们没有也得到了这些。

答案 5 :(得分:0)

您可以尝试将config.php的所有者设置为apache,并将0600这样的掩码设置为此文件... 但是如果某人可以运行php作为apache用户它将无法正常工作,我想如果sb有apache访问你的服务器,什么都行不了...