Как я могу создать защищенную систему «запомнить меня» с помощью PHP? - PullRequest
11 голосов
/ 05 сентября 2010

У меня есть система входа в систему. Как я могу внедрить безопасную запомнить меня систему с использованием файлов cookie.

Какое значение я должен хранить в имени пользователя и пароле cookie, но как я могу его обезопасить?

Ответы [ 4 ]

1 голос
/ 15 августа 2015

определить пользователя Соляного foreach в дБ, затем

при настройке

$expire_time = time() + 2 * 7 * 24 * 3600; // 2 weeks exp time

setcookie( 
    "rememberMe",
    crypt($username, $salt),
    $expire_time,
    '/'
);

при проверке

$_COOKIE['rememberMe'] === crypt($username, $salt)
0 голосов
/ 05 сентября 2010

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

0 голосов
/ 12 августа 2015

Возможно, вам следует сохранить (в вашей БД) IP-адрес посетителя, пользовательский агент, часовой пояс или установленные плагины. Что-то, что может быть легко получить с помощью Javascript, поскольку получение MAC-адреса может быть проблемой.

Тогда вы можете легко проверить, имеет ли пользователь тот же IP, UA, часовой пояс или плагины, что и в прошлый раз :) Или вы можете использовать MaxMind, чтобы проверить его местоположение и подтвердить, использует ли он правильный часовой пояс. Если есть что-то подозрительное, вы должны удалить учетные данные cookie.

0 голосов
/ 05 сентября 2010

В этом нет ничего особенного ... не позволяйте очищать файлы сеанса (настройка ini session.gc_probability = 0), и не изменяйте cookie сессии с временного на постоянный (настройка ini session.cookie_lifetime = however_long_you_want_the_user_to_be_remembered).

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

...