Как я могу создать защищенную систему «Запомнить меня», используя PHP?

StackOverflow https://stackoverflow.com/questions/3645322

Вопрос

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

Какую ценность мне нужно хранить в файле файлов cookie и паролем, но как я могу его защитить?

Это было полезно?

Решение

Определите пользователь Salle Foreach в БД, то

на настройке

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

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

на проверке

$_COOKIE['rememberMe'] === crypt($username, $salt)

Другие советы

Может быть, вы можете создать 16 Star Letter / Number String, которая связана в базе данных с этим пользователем и MAC-адресом, так что (до тех пор, пока люди не пытаются слишком твердые и подделки Mac), только эта машина может войти в систему.

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

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

Это не так много ... Не позволяйте вашим файлам сеанса очистить (настройка INI session.gc_probability = 0), и измените сеанс cookie из временного для постоянного (настройка INI session.cookie_lifetime = however_long_you_want_the_user_to_be_remembered).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top