0

我正在使用 php 和 mysql。我有一个数据库配置文件 (db-config.php),其中包含我的数据库名称、用户名和密码。我的应用程序和数据库配置文件存储在:www(httpdocs)/app/db-config.php

那安全吗?其他人/黑客是否能够窃取我的文件并获取我的数据库登录信息?

或者我应该把它放在 www 文件夹之外,例如:db-config.php 存储在 www(httpdocs) 同级文件夹中。所以在我的应用程序 1 中,我只是这样做:

include_once('../../db-config.php');

它会起作用吗?我的意思是跳转 2 级到 root/www/httpdocs 文件夹??

您有更安全的方式来存储数据库密码吗?

4

6 回答 6

6

很多公开下载的 PHP 软件通常在 www 根文件夹下的目录下都有带有 DB 密码的配置文件,只要你的服务器配置正确,应该没问题。

但是,对于任何敏感信息(例如带有密码的配置文件),最好的做法是将其存储在文档根目录之外(标准做法是向上一个文件夹),这是我的建议。

您还可以在将密码保存到配置文件之前对其进行预加密,然后让您的软件在使用它之前对其进行解密(但这只会使您的密码保持明文存储 - 一个可以访问源代码的黑客您的文件将能够很容易地解密存储的密码)。

于 2009-08-28T04:05:09.153 回答
1

希望密码不会打印到屏幕上,但最好还是将其放在无法通过网络直接访问的目录中,是的。对于您的 Web 应用程序,使用具有最低必要权限的登录也是一个好主意。

我在 chroot 监狱中运行我的网络应用程序,这意味着我最终通过本地 TCP 连接而不是通过套接字进行连接(例如,我使用 '127.0.0.1' 而不是“localhost”),因为无法使用 unix 套接字从监狱里面看到。

于 2009-08-28T04:05:16.670 回答
1

没有人可以看到您的 .PHP 文件的源代码,密码在您放置的任何地方都是安全的,特别是如果您将其保存在您的网站文件夹中(您可以完全控制),因为您没有将它放在 public_ftp 文件夹中。 ..

也许你可以把它放在 public_html 文件夹的上一层,只是在 [extreme] 的情况下,有人搞砸了 httpd.conf 并且 PHP 停止工作,所以会显示源代码。

于 2009-08-28T04:05:48.060 回答
1

如果您对 Web 服务器有足够的控制权,我建议您在 PHP 的include_path指令中添加一个目录。然后,您可以这样说:

在 PHP.ini 中

include_path=/home/xxxx/php_includes:blah.blah.blah

在 /home/xxx/php_includes 中:

create a directory named "config"
create a file named "config/database_config.php"

在您的 PHP 文件中:

include_once("config/database_config.php")

易于包含,并且安全地位于 Web 根目录之外。

编辑:

您可以在运行时使用set_include_path命令执行此操作。另外,如果您使用的是 Apache,我认为您可以通过将 php_admin_value 指令放在 .htaccess 文件中来为目录设置它(请参阅php 文档

于 2009-08-28T04:28:48.840 回答
1

是的,您可以将文件放在同一目录或其他目录中

制作一个configuration file,您可以将所有设置保存在一个文件中..您可以将其保存在任何您想要的地方。您只需要在需要时拨打电话即可。

对于该配置文件,使公众无法访问文件权限。

1.制作config.ini文件

[local]
db_host = localhost
db_user = your_local_database_username
db_pass = **********
db_name = your_local_database_name


[server]
db_host = serverhost
db_user = your_local_database_username
db_pass = **********
db_name = your_server_database_name

2.移动并授予config.ini文件的权限

3.创建你的php或连接页面conn.php

<?php
$config_file_location_path = "/var/somelocation/config.ini"

$read_file = parse_ini_file($config_file_location_path, true);
$read_data = $read_file['local'];

$db_config = $read_data;

$db_host = $db_config['db_host'];
$db_user = $db_config['db_user'];
$db_pass = $db_config['db_pass'];
$db_name = $db_config['db_name'];


$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);

if (!$conn) {
    die("Could not connect to server : " . mysqli_errno($conn));
}

如果你想努力server改变$read_data = $read_file['server'];

于 2013-07-03T09:27:46.607 回答
0

将包含文件放在更高级别将起作用。我把它们放在 /var/www 并使用

set_include_path(get_include_path() . PATH_SEPARATOR .'/var/www/');

require_once 'mysqli_connect.inc.php';

密码在 mysqli_connect.inc.php 中,但用户看不到 PHP 文件的源代码,因为 PHP 在将它们发送到浏览器之前会将它们转换为 HTML。

大概您不允许浏览器查看文件夹的内容 - 没有 Apache 所称的“目录索引”。

于 2009-08-28T04:18:43.400 回答