безопасно ли записывать mysql_connect («localhost», «root», «mypasswd») в файл?

#mysql

#mysql

Вопрос:

Или что-то вроде

в www/html/inc/ папке connect_db.php

mysql_connect ("localhost", "root", "hashed_mypasswd");

это более безопасно?

Или просто написать mysql_connect ("localhost", "root", "mypasswd"); и сделать доступ к папке ( www/html/inc/ ) доступным только с localhost, используя файл .htaccess?

Пожалуйста, помогите мне с хорошей практикой.

Комментарии:

1. 5 вопросов, 0 принимается. Каждый полученный вами ответ вам больше не помогал?

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

3. Просто храните файл надежно. Не входите в mysql с пользователем root. Не делайте файловый мир доступным для чтения. И, ребята, не вставляйте это на сайт pastebin

4. @DanielB Как мне принять ответ? Я здесь совсем новичок

5. теперь я знаю, как принять ответ. Я вижу галочку под оценочными ответами. Я приму ответы, которые я задавал до сих пор. 🙂

Ответ №1:

Пока файл будет обрабатываться PHP, беспокоиться не о чем, и одно не более безопасно, чем другое. Тем не менее, здесь также присутствует практичность: если вы пишете свой mysql_connect более чем в одном месте и решили переместить свою базу данных на другой хост, или вы решили сменить пароль, или если вы обнаружили, что это абсолютно небезопасно для подключения с использованием учетной записи root (измените это ;)), проще иметь инструкцию connect в одном месте.

Кроме того, если PHP не анализирует ваш файл, вам лучше иметь эти важные файлы вне веб-корня, недоступные даже Apache. Это самый безопасный способ.

Комментарии:

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

Ответ №2:

Если вам нужно сохранить пароль на диске, вы должны зашифровать его. Это должно предотвратить случайное восстановление пароля третьей стороной. Однако пароль, скорее всего, отправляется по проводам в виде открытого текста (не уверен в этом для MySQL).

Комментарии:

1. Шифрование означает, что оно также может быть расшифровано. Если кто-то может прочитать файл, у него, вероятно, будут средства и для чтения ключа шифрования. Тем не менее, он все равно будет отправлен обычным текстом в любом случае, но если вы разрешаете только локальные подключения, я думаю, это не должно быть большой проблемой.

2. Абсолютно. Если API требует, чтобы пароль отправлялся в виде открытого текста, то клиентское приложение должно иметь возможность восстановить пароль. Это означает, что клиентское приложение может быть отлажено для восстановления пароля. Я все еще думаю, что сохранение пароля на диске в виде открытого текста просто упрощает его и что он должен храниться в зашифрованном виде.

3. Что ж, это не повредило бы, это точно, но безопасность, которую вы получаете, не так уж велика. Конечно, это немного усложнит получение пароля, но меня больше беспокоит тот факт, что он подключается как root 😉

4. Небольшая выгода, но не большая, учитывая, что любой, кто может прочитать файл, содержащий зашифрованный файл, также сможет прочитать файл, содержащий ключи и алгоритмы, необходимые для его расшифровки. Отладка приложения даже не требуется, учитывая, что мы говорим здесь о PHP. Блокировка разрешений для файла, содержащего пароль, более важна, чем его шифрование.