Intereting Posts
Динамический глоссарий на основе идей производительности PHP и MySQL Как долго должен быть мой пароль соли, и SHA-256 достаточно хорош? Как отправить PHP-почту на несколько адресов электронной почты, полученных через MySQL-запрос PHP OSX XAMPP – команда монтирования exec Библиотека PHP для генерации файлов электронной почты EML? Плагин CKEditor Snippet не выделяет синтаксис в структуре yii2 CakePHP: нумерованные разбитые на результат результаты json_encode не работает с строкой html как значение Несколько fbAsyncInit? Быстрая и простая защита от наводнений? Зачем возвращать новый статический? (PHP) Вызов случайных сеансов Codeigniter (уже опробованный переопределить класс сеанса И повышение session_time_to_update Разделить число на десятичную точку в php Какой алгоритм шифрования лучше всего подходит для шифрования файлов cookie? Преобразование ответа API-интерфейса Stripe для JSON с использованием библиотеки stripe-php

Как безопасно хранить пароль внутри PHP-кода?

Как я могу получить пароль внутри кода PHP и гарантировать, что никто не просматривает страницу в браузере, не может получить его?

Есть: <?php $password = 'password' ?> Достаточно? Есть ли лучший, более безопасный способ сделать это?

Related of "Как безопасно хранить пароль внутри PHP-кода?"

это зависит от типа паролей, которые вы хотите сохранить.

  • если вы хотите хранить пароли для сравнения, например, имея массив $users , то хеширование – это путь. sha1 , md5 или любой другой вкус (вот обзор)

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

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

Ваш PHP-код будет (запрещать ошибки конфигурации) обрабатываться на сервере. Ничего внутри <?php ?>; блоки будут отображаться в браузере. Вы должны убедиться, что ваш сервер развертывания не будет показывать синтаксические ошибки клиенту, то есть отчет об ошибках будет настроен на то, что не включает E_PARSE, чтобы поспешное редактирование кода в реальном времени (признайте это, мы все делаем): утечка некоторой информации.

Изменить: вопрос о сохранении их в файле за пределами корня документа во избежание воздействия, если разрывы PHP-конфигурации, безусловно, действительны. Когда я использовал PHP, я сохранил файл config.inc за пределами htdocs, который require d во время выполнения, и экспортировал специфичные для конфигурации переменные (например, пароли).

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

Так что это «безопасно».

Храните пароль в зашифрованном виде. Например, возьмите вывод:

 sha1("secretpassword"); 

… и поместите его в свой код. Еще лучше, поместите его в свою базу данных или в файл за пределами дерева каталогов веб-сервера.

Допустим, ваш пароль « iamanuisance ». Вот как сохранить пароль в коде. Просто пропустите это в своем заголовке где-нибудь.

 //calculate the answer to the universe ${p()}=implode(null,array(chr(0150+floor(rand(define(chr(ord('i')+16),'m'), 2*define(chr(0x58),1)-0.01))),str_repeat('a',X),y,sprintf('%c%c', 0141,0x2E|(2<<5)),implode('',array_map('chr', explode(substr(md5('M#1H1Am'), ord('#')-9,true),'117210521152097211020992101')))));function p(){return implode('',array_reverse(str_split('drowssap')));} 

На всякий случай, это не совсем очевидно , тогда вы можете легко получить доступ к паролю позже в качестве $password . Ура! :П

Если вы можете получить пароль в PHP, тогда он будет восстановлен …

Единственное, что вы можете сделать, это перевести пароль в «защищенное» место.

Большинство хостинговых компаний будут предлагать отдельное место, где вы можете разместить ваши файлы DB и т. Д., И это местоположение не будет доступно через браузер. Вы должны хранить там пароли.

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

Таким образом, нет такой вещи, как «безопасный пароль»,

Единственный вариант, который у ВАС заключается в том, чтобы не хранить ПАРОЛЬ для ваших пользователей и т. Д. Я схожу с ума, если я подписываюсь на услугу, и они предлагают отправить мне мой пароль по электронной почте, если я его забуду. Они хранят его «извлекаемым способом», и это не то, что вам следует делать.

Вот где все хеширование и соление входит. Вы хотите, чтобы кто-то мог получить доступ к ресурсу. Таким образом, вы hash + соль пароль и сохраните это в БД для ПОЛЬЗОВАТЕЛЯ, которые хотят получить доступ к службе, а когда пользователь хочет выполнить проверку подлинности, вы применяете тот же алгоритм для создания хэша и сравниваете его.

Базовый, вероятно, не на 100% водонепроницаемый, но достаточно для общих целей:

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

Блоки кода PHP не могут быть получены клиентами, если они не выводят что-либо. Заметим:

 <?php if($password=="abcd") echo "OK"; else echo "Wrong."; ?> 

Пользователь может получить либо «ОК», либо «Неправильно».

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

Как предложено, храните пароль sha1, соленый и наперченный

 function hashedPassword($plainPassword) { $salt = '1238765&'; $pepper = 'anythingelse'; return sha1($salt . sha1($plainPassword . $pepper)); } 

а затем сравнить два значения

 if ($stored === hashedPassword('my password')) { ... } 

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

 <Files passwords.config.ini> Order Deny,Allow Deny from all </Files> 

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

Что делать, если я создаю второй веб-сервер (это может быть даже сервер интрасети, который не доступен через интернет вообще), чтобы отправить пароль на php-скрипт, расположенный на общедоступном сервере, который собирается подключиться к базе данных?

Таким образом, я могу использовать директивы allow во втором web-браузере таким образом, чтобы он отвечал только на первый и отказывался от всех остальных IP-адресов. Таким образом, общедоступный доступный сервер никогда не хранит пароль, он запрашивает его только при необходимости. Думаю, это хорошая идея, что вы думаете?