CSRF vs «[X] Remember me»
И так и эдак кручу, и всякую дичь про «Remember me»-куку читаю, и всё равно ни с какого боку не могу понять, каким образом галка «Remember me» в принципе может быть совместима с защитой от CSRF.
Там же вся идея в том, что при редиректе/сабмите с bad.com на good.com, браузер передаст куки good.com и залогинет юзера. Какая разница, будет там простенький session id или навороченная хрень? Оба же передадутся, оба залогинят юзера, и привет CSRF. Разница НЯП только в невозможности брутфорса навороченного session id.
Единственный способ защиты от CSRF – вообще не использовать куки, гнать session id вручную (заголовком или в теле), но тогда сессия теряется при закрытии вкладки. И при открытии внутренней ссылки в новой вкладке – тоже теряется.
UPD. В общем, похоже всё упирается в «ослабленную версию защиты», где GET не требует токена, но может его возвращать, чтобы потом сайт передавал его с POST. А внешний сайт-контроллер не сможет выдрать токен из GET-ответа, чтобы подсунуть его в POST.