Это не такая проблема, чтобы реализовать запомнить меня. Что вам нужно сделать, это сохранить сеанс в течение длительного времени (и установить cookie на длительное время). Даже Gmail выйдет из вас после определенного периода (я думаю, что это две недели или месяц). Тем не менее, вы должны понимать, что длительное открытие одного и того же сеанса увеличивает вероятность его взлома. В качестве контрмеры вам нужно увеличить силу вашего идентификатора сеанса. Идентификатор сеанса - это тот, который находится в файле cookie (или в URI, который обычно встречается в некоторых программах как «file.php? PHPSESSID = 1234 ...»).
Ключ должен поддерживать сильный идентификатор сеанса. Например, в Gmail у вас есть файл cookie GX со значением, аналогичным
DQAAAJoAAAA8mnjaAwgkS7y8Ws5MYCl-PAQLp9ZpMXpGKR47z4L9mlBH-4qEyApAtFbnLkzv1pPqxua1hOWMGiKYpBZr-h7Icyb-NUUg2ZW_nUFIymvw9KjmjSECYTowbCsDerkAxCzSDa83b5YC1mykPv1a9ji4znt6Fsna-AKgNTntvmUxeJ92ctsSlg9iGySEmXnisVyyJiQvI8jzbZqSpE_N2RKZ
Причина, по которой Session Hijacking в значительной степени невозможен, заключается в том, что идентификатор сессии является настолько сильным и потому что сайт везде использует HTTPS. Никто не может угадать или иначе получить ваш идентификатор сеанса (таким образом, не может взломать ваш сеанс). Вкратце, приведенный выше идентификатор сеанса, похоже, имеет в некоторой степени ~ 1250 битов, 1 * 10 ^ 376 различных возможностей. Никто не может догадаться об этом.
Очевидно, что всегда будут потенциальные способы по-прежнему проникать в сессию. Например, уязвимости XSS открывают путь к получению ваших файлов cookie и, следовательно, вашего идентификатора сеанса, но это ни в коем случае не ошибка ваших сеансов и не имеет ничего общего с «запомнить меня».
Меня беспокоит тот факт, что даже если процесс входа в систему происходил при подключении https, при каждом последующем http-запросе cookie будет отправляться в сети без шифрования.
Если вы установите флаг безопасности cookie в значение true во время HTTPS, куки никогда не будут отправляться при доступе к сайту через HTTP. Это необходимо сделать для HTTPS-сайтов.
В общем, люди, кажется, используют HTTPS только для страницы входа, что неправильно. Если кто-то действительно заботится, он должен использовать HTTPS по всей странице. В противном случае невозможно предотвратить все попытки захвата сеанса.
Почему многие все еще используют HTTPS только для входа в систему? Вероятно, потому что они не понимают, что находится в ставках, или потому что это слишком тяжело для процессора, чтобы везде использовать HTTPS. Однако все же лучше использовать HTTPS для входа в систему, чем не использовать его где-либо - потому что он шифрует учетные данные (таким образом, позже может быть украден только идентификатор сеанса, а не фактические учетные данные во время входа в систему).
Может быть, не Facebook (мне все равно), но в Gmail, если вы не установите «Всегда использовать https», будет использоваться http-соединение, и оно будет отправлять ваши незашифрованные токены через Интернет.
Что ты думаешь?
Я думаю, что значение должно быть по умолчанию HTTPS во всех случаях, если это возможно. Единственная реальная причина, почему бы не использовать HTTPS, это деньги (= производительность / оборудование).