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

Я создал файл класса database.php, который обрабатывает все запросы sql и подключается к базе данных. Я храню имя пользователя и пароль для базы данных в переменной (что легко увидеть, если вы получаете доступ к файлу php).

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

Пожалуйста, помогите мне, поскольку я нуждаюсь в некоторой идее отчаянно.

благодаря

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

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

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

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

Вместо этого вам нужно найти способ контролировать, кто имеет доступ к вашему источнику.

Извините, я неправильно истолковал вопрос, чтобы начать с ..

Если вы используете имя пользователя и пароль для своего скрипта для доступа к БД, то, очевидно, вам нужно сохранить это где-нибудь, чтобы начать (в вашем скрипте).

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

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

Нет никакого способа шифровать что-то, чтобы только MySQL мог его расшифровать. Раньше или позже вам нужно предоставить MySQL с этим текстовым паролем.

идея
Установите права доступа к файлам на database.php как можно ниже. Если у вас есть это:

  rw-rw-r-- gaurav gaurav database.php 

Тогда, возможно, установите его так (предполагая, что ваши php-процессы запущены под www-data )

  r-------- www-data www-data database.php 

Я предполагаю, что вы каким-то образом распространяете код или не доверяете своей собственной среде хоста.

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

Просмотрите эту статью для получения дополнительной информации о ряде инструментов шифрования PHP.

Если ( и только если ), вы намерены прекратить показывать имя пользователя + пароль людям, имеющим доступ к источнику, это можно сделать. Однако это не слишком удобно и состоит из следующих шагов:

Разовые:

  • поместите свое имя пользователя и пароль в сильно зашифрованный файл (например, AES с длинным сильным ключом) и установите соответствующие разрешения

При каждой загрузке:

  • на старте сервера, расшифровать файл, вручную ввести пароль файла и использовать некоторый длительный процесс как временное хранилище
  • теперь, когда у вас есть имя пользователя + пароль, хранящийся в памяти, удалите расшифрованную версию файла.

В ваших сценариях:

  • запросить имя пользователя + пароль из вашего временного хранилища
  • подключиться к базе данных
  • удалите имя пользователя + pw из переменных вашего скрипта

Примечание: все это означает, что пароль нельзя восстановить, посмотрев исходный код. Те, кто может изменять и запускать скрипты на вашем сервере, находятся в том же положении, что и раньше, – «запросить пароль, распечатать его», а не просто «распечатать». Другим недостатком является то, что теперь вам нужно ввести пароль дешифрования при каждом перезапуске сервера.

При сохранении пароля вы ВСЕГДА используете одностороннее хеширование, предпочтительно SHA-256 (поскольку MD5 не является безопасным) для хранения пароля. И когда вы хотите сравнить пароль, просто SHA-256 хешируйте попытку пароля и посмотрите, совпадают ли хеши.

Зашифрованные пароли просто небезопасны, если есть способ получить необработанный пароль для текста из искажения, ваша защита испорчена.

PS: И да, любой веб-сайт, который может отправить вам ваш пароль, испорчен.