У меня есть приложение php, которое подключается к базе данных из кода. Я блуждаю, какие будут безопасные способы хранения этих учетных данных? Это сервер linux.
EDIT: Я просто хочу услышать некоторые информированные мнения, чтобы получить информированное мнение myslef, чтобы обсудить это с моей командой. Я против шифрования любых паролей, но моя команда не убеждена.
Я думаю, что если пароли будут зашифрованы, тогда нам нужно будет хранить ключи дешифрования где-нибудь в обычном тексте, тем самым делая весь концерт бессмысленным.
Нет «безопасной манеры». Так или иначе, пароль должен быть дешифрован / не запущен, поэтому его можно отправить в библиотеку БД для установления соединения.
В лучшем случае сохраните информацию для входа в файл OUTSIDE вашего корневого каталога вашего сайта. Это не лекарство, но, по крайней мере, если конфигурация вашего сервера будет нарушена и начнет обслуживать php-источник вместо выполнения, он не позволит вашим учетным данным утечка, потому что файл не будет доступен напрямую.
По крайней мере, поместите его в файл конфигурации, который недоступен непосредственно через веб-сервер.
Таким образом, кто-то должен проникнуть в вашу машину, прежде чем читать ее.
Применяйте защиту в глубину и разрешите специальному пользователю MySQL подключаться только с localhost . Тогда даже если учетные данные подключения как-то просочились, единственный способ подключения к базе данных – через веб-сервер.
При этом злоумышленник должен иметь доступ к веб-серверу и иметь возможность выполнять произвольные коды / команды. И если это возможно скомпрометировано, уже слишком поздно.
соглашайтесь с другими, вам нужно разгласить его в какой-то момент …
но вы можете использовать функцию склепа php http://docs.php.net/manual/en/function.crypt.php
сначала encrpyt пароль, используя эту функцию или какую-либо другую функцию, после того, как encption установил пароль, введенный в качестве пароля вашей базы данных … [Примечание – я не знаю, сможет ли mysql сохранить значение, возвращаемое crpt, чтобы установить пароль] При подключении to db frm php передать исходный пароль функции crpyt [или функции / метода, используемой для encrpt выше], сохранить это в переменной и указать этот var при подключении
$encrpted_pass = crypt($original_password); $con = mysql_connect("localhost","mysql_user",$encrpted_pass);
Недостатки, если вы напрямую подключаетесь к MySQL, вам будет трудно запоминать пароль. Чтобы решить, что вы можете создать отдельного пользователя БД, если вы хотите напрямую подключиться.
2) другим методом было бы хранить пароль в отдельном файле, извлекать содержимое файла, хранить его в var и позже использовать этот var для подключения к MySQL DB, таким образом, u не будет раскрывать пароль, являющийся используется в файле, используемом для подключения к БД
$pass=file_get_contents("mysql.txt"); $con = mysql_connect("localhost","mysql_user",$pass);