Обновленную версию того, что вы пытаетесь выполнить, можно найти по адресу:
12Robots.com - ОБРАТНАЯ СВЯЗЬ с токеном сессии (обратная ссылка)
Однако возникает проблема не очистки дополнительных сеансов или переноса данных сеанса, которые вы хотите сохранить.
С очисткой сеанса
Вы не собираетесьбыть в состоянии войти в систему пользователя и сделать его сеанс недействительным одновременно.Вы должны сделать недействительным их сеанс, а затем в следующем запросе зарегистрировать их. Основной поток будет выглядеть примерно так:
- Обработайте форму входа в систему и убедитесь, что пользователь действителен
- Создатьзащищенное сообщение, содержащее учетные данные пользователя и данные сеанса для сохранения
- Признать недействительным сеанс
- Переместить страницу на себя с защищенным сообщением в URL
- С новым сеансомСозданный для этого запроса страницы, войдите в систему, используя учетные данные из защищенного сообщения
Шаг 3 (аннулирование сеанса) можно выполнить следующим образом:
<cfscript>
session.setMaxInactiveInterval(1);
getPageContext().getSession().invalidate();
</cfscript>
<cfcookie name="jsessionid" expires="now">
<cfcookie name="cfid" expires="now">
<cfcookie name="cftoken" expires="now">
, а затем немедленноredirect (cflocation) после этого, убедившись, что для addtoken установлено значение false.
Также необходимо убедиться, что защищенное сообщение является временным и не может использоваться более одного раза.Таким образом, у вас будут дополнительные действия с базой данных по обе стороны от перенаправления.
Это выполнит то, что вам нужно, но, вероятно, не так просто, как вы ожидали.
Простой альтернативный вариант
Еще один метод предотвращения фиксации сеанса - просто предотвратить шаг 2 в вашей ссылке .
Самое простое, если вы видите jsessionid, cftoken или cfid вurl, то cfabort запрос.Это должно быть сделано до того, как приложение активируется и устанавливает или обрабатывает клиентские куки.Таким образом, в Application.cfm это будет сделано до cfapplication, а в Application.cfc это будет сделано вне какой-либо функции (т. Е. Там, где вы устанавливаете «This.name»).идентификаторы сеанса и расположение к безопасному URL.Это также можно сделать с веб-сервера, используя mod_rewrite и др., Чтобы ColdFusion никогда не видел вредоносный URL.
Существуют дополнительные способы для выполнения этого шага 2, но все, что приходит на ум, требует либоВаш веб-сервер или компьютер пользователя будут скомпрометированы, и если это так, то фиксация сеанса - наименьшее из ваших беспокойств.