Не храните пароли на своем сайте

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

Решение
Сохраните пароль в переменной окружения в файле, который сервер загружает при старте, а затем просто сошлитесь на нее в сценарии:

mysql_connect('localhost',$_ENV['MYSQL_USER'],$_ENV['MYSQL_PASSWORD']);

Обсуждение
Хотя эта методика исключает пароли из исходного кода ваших страниц, она делает их доступными из других мест, которые также требуют защиты. Тут очень важно обеспечить отсутствие общедоступных страниц, которые включают в себя вызов функции phpinfo(). Функция phpinfo() показывает переменные окружения, доступные в сценарии, поэтому она покажет и пароли, размещенные в таких переменных.

Далее, особенно если вы работаете в схеме с разделяемым хостингом, установите переменные окружения таким образом, чтобы они были доступны только вашему виртуальному хосту, а не всем пользователям, работающим в разделяемом пространстве хостинга. В случае работы с веб-сервером Apache это можно сделать, установив переменные в отдельном файле, а не в главном файле конфигурации:

SetEnv MYSQL_USER "susannah"
SetEnv MYSQL_PASSWORD "y23a!t@ce8"

Включите этот отдельный файл в директиву вашего сайта в главном файле конфигурации следующим образом:

Include "/usr/local/apache/database-passwords"

Убедитесь, что этот отдельный файл, содержащий пароль (т.


е. /usr/local/apache/database-passwords), доступен для чтения только пользователю, управляющему соответствующим виртуальным хостом. СамApache обычно запускается и читает файлы конфигурации как root, поэтому он сможет прочитать включенный файл.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Обнаружение SSL-соединения
Проверка данных с помощью хеширования
Проверка надежности пароля
Работа с потерянными паролями
Совместное использование зашифрованных данных с другим веб-сайтом

Вернуться в раздел: PHP / 14. Шифрование и безопасность