Каков наиболее приемлемый способ скрытия пароля для файла «connect.php»? - PullRequest
10 голосов
/ 08 июня 2011

Поскольку мой сервер становится немного больше, и все больше пользователей получают к нему доступ, я не хочу, чтобы они видели пароль, который MySQL использует для подключения к PHP, который хранится в моем «connect.php» файл и требуется для каждой страницы. Однако он просто находится в том же каталоге, что и остальные файлы php.

Я подумал об использовании второго файла, похожего на connect.php, с доступом только к одной таблице, в котором хранятся зашифрованные пароли для подключения к MySQL, но тогда у меня возникла бы проблема скрыть ключ к нему.

Изменение разрешений также не будет работать, если вы chmod o-r или что-то подобное, никто не сможет получить доступ к веб-приложению, очевидно.

Есть ли общепринятый способ обойти эту проблему, или я должен просто решить ее самостоятельно? Проблема в том, что я не хочу, чтобы он был слишком запутанным, если есть принятый метод.

Ответы [ 6 ]

8 голосов
/ 08 июня 2011

Я бы настоятельно рекомендовал переместить connect.php в один каталог над вашим DOCUMENT_ROOT, чтобы он не был доступен с вашего веб-сервера.

Ваши php-файлы могут, конечно, включать connect.php с полным или относительным путем, например:

require_once('../connect.php');
7 голосов
/ 08 июня 2011

Все ответы содержат полезные советы, но не учитывают тот факт, что любой пользователь, имеющий доступ к серверу, может просто посмотреть и открыть config.php в редакторе.

Установите ваши файлы конфигурации в каталог вне общедоступного веб-пространства , веб-сервер должен быть владельцем этого каталога, и для него должны быть установлены права доступа 700. Для всех файлов, которые он содержит, должно быть 644. Таким образом, нет Можно даже прочитать содержимое файла, кроме пользователя веб-сервера или пользователя root.

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

2 голосов
/ 08 июня 2011

Переместите его в папку после корня www, например, www / includes. Оттуда вы можете использовать htaccess, чтобы заблокировать разрешение на просмотр файлов в /include.

После подключения к базе данных SQL используйте unset ($ username, $ password), чтобы не было угрозы безопасности для кого-то, повторяющего имя пользователя пароля.

Наконец, всегда лучше иметь выделенный хостинг, чтобы никто другой, имеющий доступ к веб-серверу, не мог потенциально просматривать файлы других пользователей.

2 голосов
/ 08 июня 2011

Содержимое файлов на стороне сервера не может быть получено пользователями, если вы не покажете его им добровольно (или по ошибке).

Скорее всего, любой компромисс может быть достигнут через FTP-доступ, и в этом случае хакер получитв любом случае доступ ко всем файлам на веб-сервере.

2 голосов
/ 08 июня 2011

Установите $password, подключите, затем unset() $password.Они никогда не должны быть в состоянии восстановить это.Я не думаю, что файл PHP может быть загружен в любом случае, ни видел.Он всегда компилируется сервером раньше.

0 голосов
/ 13 июня 2011

Кроме того, вы можете полностью избавиться от паролей и настроить сервер БД так, чтобы принимались только соединения с локального хоста.Это будет работать только на выделенном хостинге, но это риск для безопасности, если вы находитесь на виртуальном хостинге.

...