Как предотвратить получение взломщиком доступа для входа через кражу файлов cookie

Я пытаюсь найти решение для защиты функциональности «запомни меня». Будут использоваться файлы 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%, но снижает вероятность рисков и предупреждает пользователя о том, что другой человек использует ту же учетную запись.

Я стараюсь сделать это как можно проще.

Достаточно ли хорошее решение? Есть ли в решении серьезные недостатки?

7
задан user311509 10 September 2011 в 22:13
поделиться