Почему не удается захватить cookie сессии Yesod?
Yesod book говорит
Шифрование не позволяет пользователю проверять данные, а подпись гарантирует, что сеанс не может быть захвачен или подделан.
Мне непонятно, почему это так. Если перехватчик захватывает куки файл, когда он отправляется с сервера и использует его до того, как законный пользователь сделает другой запрос, не будет ли захвачен сеанс?
Мне кажется, что единственный способ действительно предотвратить захват сеанса - использовать SSL повсюду. Но если я это сделаю, то подписание и шифрование, сделанное Yesod, становятся ненужными накладными расходами (EDIT: накладные расходы, связанные с предотвращением угона). Как отмечает @sr_ в комментариях, это все равно полезно в противном случае).
Ответы
Ответ 1
Это хороший улов. Это было более точным, когда мы включили бы IP-адрес клиента в файл cookie, чтобы предотвратить угон. В сочетании с защитой от несанкционированного доступа это сделало невозможным для работы MITM, если вы не были NAT за тем же маршрутизатором или с использованием того же самого прокси.
К сожалению, нам пришлось отключить эту защиту из-за опасений относительно прокси. Возможно, что один пользовательский запрос поступает из нескольких IP-адресов из-за промежуточных прокси-серверов. У меня нет данных, чтобы рассказать, как часто это происходит, но было достаточно заботы об этой функции безопасности, вызывающей поломку, которую мы отключили.
Спасибо, что принесли это, Я исправил книгу.