最近出现了一个主要问题,我的网络托管公司搞砸了,我的所有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我的描述不好..只是问问我将清除我的描述中的任何空白。
答案 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或其他东西 - 只有逻辑。