Сбросьте старые куки перед загрузкой $ _COOKIES - PullRequest
0 голосов
/ 07 декабря 2011

Я перемещаю старое веб-приложение, написанное в ColdFusion на PHP5 .В старом приложении использовался файл cookie, и поэтому многие пользователи получили его в своих браузерах.

Домен такой же, и поэтому PHP5 получает старый файл cookie в автоглобальном $_COOKIE, другими словамирезультирующий print_r( $_COOKIE ) выглядит следующим образом:

Array
(
    [CFID] => 10753812
    [CFTOKEN] => 81032420
    [CFGLOBALS] => urltoken=CFID#=10753812&CFTOKEN#=81032420#lastvisit={ts \'2011-12-07 11:51:43\'}#timecreated={ts \'2011-11-28 01:19:23\'}#hitcount=3#cftoken=81032420#cfid=10753812#
)

В целом все нормально, за исключением брандмауэра приложения ModSecurity2 : автозагрузка $ _COOKIES брандмауэра определяет как злоРаньше с ложноположительной инъекцией SQL, а затем с некоторыми XSS-атаками.

Я могу отключить эти правила, но это не лучшее решение (я думаю).

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

Спасибо.

Ответы [ 3 ]

0 голосов
/ 07 декабря 2011

другим возможным решением может быть использование javascript на странице моста

<script type="text/javascript">document.cookie="";</script>
0 голосов
/ 09 декабря 2011

Решено с определенным ModSecurity2 правилом и страницей моста PHP:

1) Уровень HTTP: при наличии cookie, перенаправить на ... В конфиге Apache:

SecRule REQUEST_COOKIES:CFGLOBALS !^$ "phase:1,nolog,pass,redirect:http://www.abcde.com/cookie_reset.php"

2) Прикладной уровень: сбросьте старые куки. На странице cookie_reset.php

<?php

setcookie ("CFID", "", time() - 3600);
setcookie ("CFTOKEN", "", time() - 3600);
setcookie ("CFGLOBALS", "", time() - 3600);

header("Location: http://www.abcde.com/");
0 голосов
/ 07 декабря 2011

вы можете попробовать (php 5.3?) Этот php ini conf:

auto_globals_jit = On

, затем setcookie (....) для сброса, после этого получить доступ к $ _COOKIE для чтения

...