Как хранить пароль без базы данных (PHP)?

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

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

$password = "something"

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

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

4 ответа

Решение

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

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

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

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

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

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

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

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

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

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

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

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

Оба метода являются односторонними, поэтому убедитесь, что вы запомните свой пароль.

Другие вопросы по тегам