PHP pam_auth и куки - PullRequest
       19

PHP pam_auth и куки

0 голосов
/ 09 января 2010

Короче говоря, я разрабатываю внутренний механизм отчетов.Он полностью основан на сети (с использованием PHP и различных методов AJAX) и интерпретирует данные, хранящиеся в базе данных MySQL нашим производственным программным обеспечением.Он работает на сервере Ubuntu 8.04, и все сотрудники имеют учетную запись linux на этом компьютере.Я настроил систему входа в систему, используя pam_auth, которая заставляет пользователя входить в систему под своей учетной записью linux и определяет, принадлежат ли они к соответствующей группе для доступа к определенным отчетам.

Эта часть отлично работает, моя проблема здесь заключается в добавлении функции «запомнить меня» с использованием файлов cookie.Я хотел бы, чтобы пользователи имели 30-дневный файл cookie, чтобы сэкономить время и усугублять необходимость входа в систему каждый раз, когда истекает срок их сеанса.Я написал часть кода «запомнить меня», и он прекрасно хранит куки.Я храню только их имя пользователя и md5 хэш их пароля.Проблема здесь возникает, когда пришло время для их повторной аутентификации.Обычно я просто делаю это, сравнивая сохраненное имя пользователя с паролем этого пользователя из базы данных.Что усложняет то, что у меня нет прямого доступа к именам пользователей и паролям.Все они хранятся в / etc / passwd и / etc / shadow, а логины обрабатываются модулем PAM.pam_auth ожидает имя пользователя в виде простого текста и пароль в виде простого текста.

Похоже, мои единственные альтернативы - хранить пароль в виде простого текста или с обратимым шифрованием, но мне не особо нравятся эти идеи..

Есть ли здесь лучшие решения?

1 Ответ

0 голосов
/ 09 января 2010

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

Вы можете установить длительность сеанса PHP не менее 30 дней, изменив эти две настройки ini: session.cookie_lifetime и session.gc_maxlifetime. Затем, когда пользователь вошел в систему, вы можете сохранить его имя пользователя, а когда он вошел в суперглобальный массив $ _SESSION после вызова session_start (). Когда пользователь возвращается, вы можете проверить значения в массиве $ _SESSION, чтобы увидеть, вошли ли они в систему и было ли это менее 30 дней назад.

Теперь, если вам по-прежнему нужна аутентификация PAM по другим причинам, вам придется хранить их пароль в переменной сеанса либо в виде открытого текста, либо в зашифрованном виде. Хотя это не идеальный вариант, он более безопасен, чем файл cookie в браузере пользователя. Для получения дополнительной информации см. PHP Session - Manual .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...