Каков наиболее приемлемый метод скрытия пароля для файла "connect.php"?

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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

require_once('../connect.php');

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

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