Я использую простую систему входа в систему на основе СЕССИИ Вар. После того как пользователь входит в систему, var сессии установлен, который говорит моему сценарию, что пользователь должен быть принят в. Я не использую пользовательского клиентского var cookie.
Я хотел бы предложить опцию на экране входа в систему, который говорит, "сохраняют меня loggued в целый день". Как каждый делает это безопасным способом?
Во-первых: настройте директиву session.cookie_lifetime
в файлах конфигурации php.ini, или через session_set_cookie_params ()
.
Затем сохраните имя пользователя и хеш-значение пароля в сеансе и подтвердите этот логин на каждой странице. Пока он действителен, они могут оставаться в системе.
Естественное истечение срока действия файла cookie сеанса, как правило, должно поддерживать порядок, так как вы не допустите, чтобы кто-то вышел из системы в середине сеанса (если звездочки выровнены для это, конечно), если они сохранят его активным. Однако в противном случае я бы посчитал решение eCartoth вторым, поскольку вы могли бы просто добавить вторую строку к оператору if:
if (my_validate_user_function($_SESSION['username'],$_SESSION['passhash'])
&& $_SESSION['deathstamp'] > time()
) {
// user is logged in again, oh boy!
}
else {
// send in the death robots
header('Location: /login.php',true,302);
}
РЕДАКТИРОВАТЬ: Одна вещь, которую вы, возможно, захотите рассмотреть, это фиксация сеанса и / или захват сеанса. Для предотвращения этого я бы рекомендовал одно (или оба) из двух решений:
session_regenerate_id ()
после каждой успешной попытки входа в систему. Одним из вариантов может быть настройка таблицы MySQL, которая сохраняет переменные сеанса и связывает их с IP-адресами и срок действия, но я не уверен во всех деталях того, как это будет реализовано.
Самый простой (хотя не рекомендуемый) способ сделать то, что вы ищете, - это установить $ _ COOKIE
с именем пользователя и паролем на компьютере, которые затем ваш сайт будет проверять, когда пользователь входит в систему.
В целях дополнительной безопасности, вам лучше сохранить только один файл cookie в качестве соленый MD5-хэш данных пользователя, чтобы предоставить потенциальному хакеру меньше информации о данных учетной записи пользователя. Продолжительность может быть установлена при установке cookie; php.
Посмотрите на атрибут HTML автозаполнения (в тегах формы или ввода).
<form [...] autocomplete="off"> [...] </form>
Изменить:
В настоящее время - из комментариев - веб-браузеры не всегда соблюдать поведение, определенное тегом автозаполнения. Это неуважение может быть окружено небольшим количеством кода JavaScript, но вы должны подумать о том, что вы хотите сделать, прежде чем использовать это.
Во-первых, поля будут заполнены во время загрузки страницы и будут очищены только после загрузки страницы. Пользователи будут спрашивать, почему поле было очищено.
Во-вторых, это приведет к сбросу других механизмов веб-браузера, таких как автозаполнение поля, когда вы вернетесь к предыдущей странице.
jQuery (function () {$ (" input [autocomplete = off] "). val (" ");});