14

可能重复:
如何在 PHP 中保护数据库密码?

最近我得到了一个应该用 PHP 完成的网站项目,但我在 PHP 方面没有太多经验。无论如何,它已经启动并运行,但还有很大的改进空间。我感觉不舒服的一件事是我处理数据库的方式:我将数据库连接信息放在一个单独的 db.php 文件中,并在需要的地方包含它。但我记得多次看到服务器返回的 PHP 源文件。

所以现在我的问题是:放置数据库敏感数据的更好或最佳方式/位置是什么?

顺便说一句,当出现问题时,如何不让 PHP 在网页上显示错误消息?php.ini 中某处的自定义错误页面或设置?谢谢!

注意:我使用 PHP 的方式是旧式的,而不是面向对象的方式。但是,如果有更好的方法来为未来的项目做准备,我对面向对象或 MVC 方式持开放态度

4

3 回答 3

9

我不知道这是否是您要查找的内容:
您可以将敏感数据放在 db.php 中,但要放在 web 根目录之外(public_html 或 www)。

例如,您可以有一个名为 config 的目录,它是您的 Web 根目录的同级目录,并将您的 db.php 文件存储在那里。

您可以像这样包含您的 db.php 文件:

require_once('../config/db.php');

我希望这有帮助。

于 2012-04-16T14:44:26.487 回答
2

我会亲自创建一个名为 db.php 的文件并将其放在服务器上的 public_html 文件夹上方

例如

<?php
    error_reporting(0);
    $link = FALSE;
    $link = mysql_connect('hostname', 'username', 'password');
    if ( ! $link)
    {
        die("Couldn't connect to mysql server!");
    } else {
        mysql_select_db('databasename');
    }
?>

这会在连接到数据库的同时关闭错误报告,在 index.php 中,您可以像这样包含该文件:

<?php require('../db.php'); ?>
于 2012-04-16T14:53:33.140 回答
1

可以将其放在 db.php 文件中,只需require_once()在每个文档的开始<?php标记之后使用即可。

如果 basedir 限制无效,请将 db.php 文件移到您的 web/ftp 根目录之外,这样绝对无法通过 http/ftp 访问它。不过,请确保在此文件上正确设置了权限。

由于您的代码没有使用 OOP 或 MVC 结构,因此这是最好的方法。

于 2012-04-16T14:44:26.740 回答