2011-12-07 60 views
0

我正在移動一箇舊的Web應用程序,其編寫代碼爲ColdFusionPHP5。 舊的應用程序使用的是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攻擊匹配。

我可以禁用這些規則,但不是最好的解決方案(我認爲)。

如何檢查ColdFusion cookie是否存在? 如何在不自動加載的情況下從用戶瀏覽器中刪除舊Cookie?

謝謝。

回答

0

與特定ModSecurity2規則和PHP橋頁面來解決用javascript:

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

你可以嘗試(PHP 5.3?)這個PHP INI的conf:

auto_globals_jit = On 

然後,setCookie方法(....)復位,在此之後,訪問$ _COOKIE閱讀

+0

這unapplicable,只是即時加載隻影響_SERVER $和$ _ENV。 –

0

另一種可能解決方案可以在一個橋頁

<script type="text/javascript">document.cookie="";</script> 
+0

而這不起作用:-( –

+0

對不起,再次嘗試(cookie而不是cookie)這將工作! – 2011-12-07 16:15:43