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

Это - одно из последствий "компиляции однажды, выполненный где угодно" лозунг: выполнение Java независимо от размера слова используемого оборудования и порядка байтов; JVM работает везде тот же путь.

Эта гарантия независимости работает намного лучше, чем попытка абстрагировать ОС далеко;-)

8
задан Eric Leschinski 7 April 2015 в 00:46
поделиться

10 ответов

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

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

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

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

12
ответ дан 5 December 2019 в 06:54
поделиться

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

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

6
ответ дан 5 December 2019 в 06:54
поделиться

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

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

2
ответ дан 5 December 2019 в 06:54
поделиться

Допустим, ваш пароль - « 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 . Ура! : P

2
ответ дан 5 December 2019 в 06:54
поделиться

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

sha1("secretpassword");

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

1
ответ дан 5 December 2019 в 06:54
поделиться

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

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

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

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

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

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

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

1
ответ дан 5 December 2019 в 06:54
поделиться

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

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

1
ответ дан 5 December 2019 в 06:54
поделиться

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

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

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

0
ответ дан 5 December 2019 в 06:54
поделиться

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

-1
ответ дан 5 December 2019 в 06:54
поделиться

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

0
ответ дан 5 December 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: