Как Вы реализовали бы основанную на форме аутентификацию без отступающей базы данных?

Поскольку компилятор считает, что это объявление функции, которая не принимает аргументов и возвращает экземпляр MyObject.

6
задан Stu Thompson 17 September 2008 в 07:56
поделиться

4 ответа

Несколькими путями Вы могли сделать это.

  1. htaccess - имейте свой дескриптор веб-сервера, защищающий рассматриваемые страницы (не точно cgi форма, базирующаяся хотя).
  2. Используйте cookie, и своего рода алгоритм хеширования (md5 достаточно хорошо) сохранить пароли в плоском файле, где каждая строка в файле является username:passwordhash. Удостоверьтесь, что посолили свои хеши для дополнительной безопасности по сравнению с таблицами радуги. (Этот метод немного наивен... быть очень осторожным с безопасностью, если Вы идете этим путем),
  3. используйте что-то как sqlite база данных только для обработки аутентификации. Sqlite компактен и достаточно прост, что он может все еще удовлетворить Ваши потребности, даже если Вы не хотите большой бэкенд дб.

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

5
ответ дан 17 December 2019 в 02:36
поделиться

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

Необходимо ли действительно видеть заголовок Авторизации, если веб-сервер заботится об управлении доступом для Вас?

Кроме того, при обеспечении приложения известному списку людей (а не общественность), можно обеспечить основанный на веб-сервере доступ на других факторах, таких как входящий IP-адрес, клиентские сертификаты и много других вещей, которые являются вопросом конфигурации вместо программирования. Если Вы объяснили свои ограничения безопасности, мы смогли предлагать лучшее решение.

Удача, :)

1
ответ дан 17 December 2019 в 02:36
поделиться

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

-1
ответ дан 17 December 2019 в 02:36
поделиться

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

Быстрый поиск Google php htpasswd показывает эту страницу с функцией PHP для проверки учетных данных по htpasswd. Вы могли интегрировать его (предположение, что Вам установили сессии для автозапуска) с некоторым кодом как это:

// At the top of your 'private' page(s):
if($_SESSION['authenticated'] !== TRUE) {
    header('Location: /login.php');
    die();
}

// the target of the POST form from login.php
if(http_authenticate($_POST['username'], $_POST['password']))
    $_SESSION['authenticated'] = TRUE;
1
ответ дан 17 December 2019 в 02:36
поделиться
Другие вопросы по тегам:

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