Вопрос

Я использую PHP и MySQL.У меня есть файл конфигурации базы данных (db-config.php), в котором указаны имя моей базы данных, имя пользователя и пароль.Хранение файлов конфигурации моего приложения и базы данных по адресу:www(httpdocs)/app/db-config.php

Это безопасно?Смогут ли другие/хакеры украсть мой файл и получить данные для входа в мою базу данных?

Или мне следует поместить его за пределы папки www, например:db-config.php хранится в папке www(httpdocs) того же уровня.Итак, в одном из моих приложений я просто делаю это:

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

Будет ли это работать?Я имею в виду прыжок на 2 уровня вверх в папку root/www/httpdocs??

Есть ли у вас более безопасный способ хранения пароля базы данных??

Это было полезно?

Решение

Многие общедоступные программное обеспечение PHP обычно имеют файл конфигурации с паролями DB в каталоге в папке www Root, и до тех пор, пока ваш сервер настроен правильно, он должен быть в порядке.

Лучше сделать для любой конфиденциальной информации, такой как файл конфигурации с паролями, - это сохранить ее вне Корень документа (одна папка - это стандартная практика), и я бы порекомендовал.

Вы также можете предварительно включить пароль, прежде чем сохранить его в файле конфигурации, а затем заставить ваше программное обеспечение расшифровать его перед его использованием (но это только сохранило бы ваш пароль в Clear-Hacker, который имеет доступ к Sourcecode Ваши файлы смогут довольно легко расшифровать сохраненный пароль).

Другие советы

Надеемся, что пароль не напечатан на экран, но все еще лучше всего иметь его в каталоге, не доступной через Интернет, да. Это также хорошая идея для вашего веб -приложения использовать вход с минимальными необходимыми разрешениями.

Я запускаю свои веб -приложения в тюрьме Chroot, что означает, что в конечном итоге я подключаюсь к локальному соединению TCP вместо гнезда (например, я использую '127.0.0.1' вместо «Localhost»), поскольку сокет Unix не может быть Видно из тюрьмы.

Никто не может увидеть исходный код ваших файлов .php, пароль безопасен в любом месте, где вы его размещаете, особенно если вы храните его в папке своего сайта (который у вас есть полный контроль), Sinse вы не помещаете его в папку public_ftp. ..

Возможно, вы можете поместить его на один уровень над папкой public_html, только в [экстремальном] случае кто -то облажается httpd.conf, а PHP перестанут работать, поэтому будут обнаружены источники.

Если у вас достаточно контроля над веб -сервером, я рекомендую добавить каталог в PHP Включите_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")

Легко включить, и безопасно за пределами веб -корня.

РЕДАКТИРОВАТЬ:

Вы можете сделать это во время выполнения с set_include_path командование Кроме того, если вы используете Apache, я думаю, что вы можете установить это для каталога, поместив директивы php_admin_value в файле .htaccess (см. PHP документация)

Да, вы можете поместить файл в тот же или другой каталог

Сделать 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'];

Размещение включаемого файла на более высоком уровне будет работать.Я помещаю их в /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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top