Каков наиболее приемлемый метод скрытия пароля для файла "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
В качестве альтернативы вы можете вообще избавиться от паролей и настроить сервер БД, чтобы были приняты только соединения из локального хоста. Это будет работать только на выделенном хостинге, но это риск безопасности, если вы используете общий хостинг.