Я пытаюсь найти решение для защиты функциональности «запомни меня». Будут использоваться файлы cookie.
function enc($string) {
$slat = "%32!@x"; //can be auto-generated
$hash = sha1(md5($slat.$string)).md5($string).sha1(md5(md5($string)));
return $hash
}
echo enc("password"); //store user's password in db
Я начал думать: «А что, если взломщик украдет cookie моего члена!» В этом случае у хакера будет доступ до тех пор, пока хакер ИЛИ исходный пользователь не выйдет из системы. Не будет никаких доказательств (кроме последнего входа в систему), что учетная запись взломана. В этом случае хакер всегда будет иметь доступ каждый раз, когда исходный пользователь входит в систему с помощью «Запомнить меня», пока исходный пользователь не изменит пароль.
Если предположить, что хакер не мог знать пароль.
Решения (как предотвратить доступ хакера, если он украл cookie пользователя):
1. В пользовательской таблице db я помещаю поле «Token», которое будет содержать значение соли.
2. Каждый раз, когда пользователь входит в систему через форму или через cookie (автоматический вход), обновляйте токен с помощью автоматически созданного значения. Также обновите поле пароля новым хешем.
3. Теперь установите cookie с новыми значениями.
4. Предыдущий файл cookie больше не действителен.
5. Предположим, что хакер получил доступ, его доступ будет временным, пока исходный пользователь не войдет в свою учетную запись, и не сможет вносить серьезные изменения, такие как изменение пароля / электронной почты.
Хакер и Пользователь поделятся Шагом 2! Каждый раз, когда хакер входит в систему, пользователь исключается из доступа из-за доступа к нескольким учетным записям и наоборот.Это будет означать, что учетная запись украдена, поэтому не пройдет много времени, пока исходный пользователь просто пойдет и изменит пароль.
Это решение не на 100%, но снижает вероятность рисков и предупреждает пользователя о том, что другой человек использует ту же учетную запись.
Я стараюсь сделать это как можно проще.
Достаточно ли хорошее решение? Есть ли в решении серьезные недостатки?