安全存储数据库凭据

时间:2012-05-30 22:50:00

标签: php database security

最近出现了一个主要问题,我的网络托管公司搞砸了,我的所有php文件都以纯文本显示。出于显而易见的原因,这对我来说是个主要问题。主要是因为暴露了mysql数据库的细节。

我现在正试图改变我的php文件获取数据库登录信息的方式,这样即使托管公司让我失败也不会再发生这种情况。

我目前的设置如下:

     include 'info.php';

    class Login {

var $host;
var $username;
var $password;
var $db;
var $url;

info.php里面是数据库的用户名,密码等。我想这样做,以便永远不会查看info.php文件,只有我的.php文件能够访问info.php才能获得登录信息。

我该如何设置?这对我来说是一个棘手的解释所以请不要苛刻和-1我的描述不好..只是问问我将清除我的描述中的任何空白。

3 个答案:

答案 0 :(得分:5)

只需将info.php放在您的webroot之外。通过这种方式,您可以包含它,但是如果您的网站托管f *#$ up,则其他任何人都无法查看该文件,即使是纯文本也是如此。

然后你会这样包括它:

include('../info.php');

这样,即使有人发现您有一个名为info.php的文件存储了您的所有密码,他们也无法将浏览器指向该文件。

以上将是理想和最无懈可击的解决方案。但是,如果由于权限而无法实现,则另一个选项是将所有敏感文件放在目录中,并使用.htaccess文件阻止对该目录的直接访问。

在要阻止访问的目录中,放置一个.htaccess文件,其中包含以下内容:

deny from all

答案 1 :(得分:1)

如果由于某种原因xbonez的答案不起作用(假设一个人无法访问非document_root文件夹)..你可以通过使用.htaccess来实现同样的目的

<files info.php>
 order allow,deny
 deny from all
</files>

理论上(未经测试)应保护文件不被浏览器使用,但不阻止php包含所述文件。

答案 2 :(得分:-2)

创建重定向到示例文件的表单&#34; requests.php&#34;如果您的数据正确地重定向到特定页面,如果不是这样,那么。在交换机的末尾放置anoter redirect。这样用户就无法看到该页面了。不要把它放在HTML或其他东西 - 只有逻辑。