Как мне сохранить пароль пользователя LDAP в cookie? - PullRequest
3 голосов
/ 15 ноября 2009

Итак, у меня есть метод аутентификации черного ящика, переданный мне из аккаунтов людей, который в основном составляет ldap_bind($connection, $username, $password). Но, конечно, я хочу, чтобы мои пользователи могли входить, скажем, в течение 30 дней одновременно.

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

Способ , который обычно работает, но не работает из-за моего черного ящика , заключается в том, чтобы сохранить пароль пользователя в базе данных (или сохранить его в хешированном виде?) И сохранить хешированную версию в файле cookie, и затем сравните значения. Это не работает здесь, так как мой черный ящик требует фактический пароль, а не хешированный пароль.

Моя нынешняя мысль - это некое шифрование (в отличие от хеширования). Но поскольку это, очевидно, распространенная проблема, я подумал, что лучше сначала спросить, есть ли лучшее решение, а если нет, то что вы бы предложили для метода шифрования / дешифрования.

Ответы [ 2 ]

8 голосов
/ 15 ноября 2009

Это на самом деле не ответит на ваш вопрос, , но вы НЕ должны хранить пароли своих пользователей, даже не зашифрованные.

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

Опять же, это очень плохая практика. если ldap не позволяет вам хранить сессии / пароли, то, вероятно, есть веская причина для этого.

0 голосов
/ 14 мая 2013

когда пользователь входит в систему, предоставьте ему случайно сгенерированный «cookie-файл сессии» (не строго cookie-файл сеанса, поскольку он будет длиться дольше, чем сеанс просмотра) и сохраните кортежи:

user_id | cookie_id

, затем подключите cookie_id, присоедините user_id к вашей таблице пользователей и начинайте.

...