Я создал файл класса 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.
Если ( и только если ), вы намерены прекратить показывать имя пользователя + пароль людям, имеющим доступ к источнику, это можно сделать. Однако это не слишком удобно и состоит из следующих шагов:
Разовые:
При каждой загрузке:
В ваших сценариях:
Примечание: все это означает, что пароль нельзя восстановить, посмотрев исходный код. Те, кто может изменять и запускать скрипты на вашем сервере, находятся в том же положении, что и раньше, – «запросить пароль, распечатать его», а не просто «распечатать». Другим недостатком является то, что теперь вам нужно ввести пароль дешифрования при каждом перезапуске сервера.
При сохранении пароля вы ВСЕГДА используете одностороннее хеширование, предпочтительно SHA-256 (поскольку MD5 не является безопасным) для хранения пароля. И когда вы хотите сравнить пароль, просто SHA-256 хешируйте попытку пароля и посмотрите, совпадают ли хеши.
Зашифрованные пароли просто небезопасны, если есть способ получить необработанный пароль для текста из искажения, ваша защита испорчена.
PS: И да, любой веб-сайт, который может отправить вам ваш пароль, испорчен.