1

我有一个小页面,其中包含与我的 MySQL 数据库的连接数据,我include在其他需要它的页面中。小代码是:

[connect_DB.php]
----------------
<?php

define("HOST", "localhost");
define("USER", "myUser");
define("PASSWORD", "myPasword");
define("DATABASE", "members");

$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);

?>

我的一个朋友向我证明他可以下载 .PHP 文件,不到 2 分钟,他就做到了。这意味着他获得了我的 MySQL 服务器的登录信息。而且我想知道是否存在另一种连接数据库的方式,无需将密码放入文件等。他建议我使用 SSL 或 TSL,或者简单地将 HTTPD.CONF 或 .HTACCES 配置为不允许“外部”访问到文件。这是正确的还是可以实现的?

我实际上是在 Wamp Server (Win7) 上测试它,我无法创建一个 .HTACCESS 文件,因为它告诉我输入文件的名称(我已经介绍过!:() 每次我尝试用这种方式命名它.

我知道这可能是一个重复的问题,但相信我,我读了很多,但我不明白我该怎么做。提前谢谢你。

4

2 回答 2

1

最有可能的是,您的服务器设置不正确,这意味着 PHP 引擎没有运行,因此它只是按原样发送或显示文件内容text/html而不被 PHP 解析。这是您在评论中提到的某些工具可能访问该文件的唯一方法,如果某处没有指向该文件的链接,这样的工具也不会看到该文件,因此您可能启用了目录索引。

要测试您是否启用了 PHP,只需创建一个文件并将其放入: <?php phpinfo(); ?>如果它显示您的 php 信息,那么我很难过,如果没有,那么它证明您的服务器配置错误为 PHP。

虽然一旦修复,最好将敏感文件放在 Web 根目录之外。将值设置在常量中并不是一个好主意,因为像get_defined_constants()这样的函数将允许访问敏感值。只需将它们直接放在构造参数中即可。

如果您想阻止对只有 PHP 可以访问的目录的访问,您可以在其中创建一个 .htaccess 文件deny from all,这将导致服务器发送 403 Forbidden。

于 2013-06-24T13:55:28.520 回答
1

我很确定您的主机 Provider 没有解析 PHP 文件,因为如果它们通过解释器,就无法下载源代码。

确保您已安装、配置和激活 PHP,如有问题,请联系您的提供商的支持。最简单的测试方法是上传文件:

测试.php

<?php phpinfo(); ?>

要保护文件,只需将您的数据库配置 php 放在或目录(其中一个最有可能是您的文档根目录)之外,您仍然可以public_html通过PHP 在其中进行操作。htmlhtdocsinclude();

其他解决方案是通过.htaccess在文件中放置类似内容并将其上传到 document_root 的位置来保护文件:

<Files db_config.php>
deny from all
</Files>

为了增加一点安全性,您可以通过在顶部添加以下内容来保护 db_config.php:

if (!defined('IN_MY_PROJECT')) {
    die('forbidden');
}

并将其放在您的 index.php 之上:

define('IN_MY_PROJECT', true);
于 2013-06-24T13:58:38.843 回答