Как хранить пароль без базы данных (PHP)? - PullRequest
4 голосов
/ 22 января 2011

Я хотел бы иметь страницу, требующую пароль для входа в систему, но без базы данных.

Я думал о том, чтобы жестко закодировать ее на странице, то есть:

$password = "something"

Или зашифровать его и сохранить в текстовом файле?

Любой совет приветствуется.

Ответы [ 4 ]

4 голосов
/ 22 января 2011

Если его нет в базе данных, я бы склонен хранить его в текстовом файле, который находится за пределами webroot сервера.Если вы сохраните его в сценарии php и что-то произойдет с конфигурацией сервера, возможно, сценарий php можно будет обслуживать в виде простого текста, а не анализировать через php, поэтому пароль будет виден.Конечно, при нормальных обстоятельствах это вряд ли произойдет, но это возможный риск.Шифрование может помочь, но вам также понадобится хранить ключ дешифрования где-нибудь, так что для кого-то расшифровка будет лишь небольшим неудобством.Возможно, лучше хранить пароль в хешированном формате (например, MD5 или SHA-1), хэшировать пароль, который вводит пользователь, используя тот же метод, а затем сравнивать хэши.

4 голосов
/ 22 января 2011

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

Вы определенно не хотите хранить в текстовом формате.

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

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

3 голосов
/ 22 января 2011

Вы можете сделать любой из них.Просто убедитесь, что храните хэш пароля, а не настоящий для безопасности.Вот и очень простой пример.

<?
    if(md5($_REQUEST['password']) == 'md5ofyourpasswordHERE'){
         //do your logged in page stuff here.
    } else {
         //kick them out or tell them to resupply password.
    }
?>

Вы также можете проверить имя пользователя, если это важно для вас.

Надеюсь, это поможет!

1 голос
/ 22 января 2011

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

  • first echo sha1('your password');
  • строка результата (не читается) копировать и вставлятьв скрипте или текстовом файле
  • при сравнении используйте if ( sha1($password) == '543f3fc32c232c32') ...

, вы также можете использовать md5 для хеширования

Оба метода являются односторонними, так что "убедитесь, что вызапомним ваш пароль "

...