Как хранить пароль без базы данных (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 для хеширования
Оба метода являются односторонними, поэтому убедитесь, что вы запомните свой пароль.