2011-12-07 6 views
0

Je déplace une ancienne application web écrite en ColdFusion à PHP5. L'ancienne application utilisait un cookie, et donc beaucoup d'utilisateurs l'ont dans leur navigateur.

Le domaine est le même et ainsi PHP5 obtient le vieux biscuit dans le $_COOKIE-global, autrement dit le résultat print_r($_COOKIE) ressemble:

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# 
) 

C'est dans l'ensemble correct, à l'exception du pare-feu d'application ModSecurity2: autoloading $ _COOKIES le pare-feu le détecte comme mal. Avant avec une injection SQL faussement positive, puis avec certaines attaques XSS correspond.

Je peux désactiver ces règles, mais ce n'est pas la meilleure solution (je pense).

Comment puis-je vérifier si le cookie ColdFusion existe? Comment puis-je supprimer un ancien cookie du navigateur de l'utilisateur sans le charger automatiquement?

Merci.

Répondre

0

Résolu avec un ModSecurity2 spécifique règle et une page de pont PHP:

1) couche HTTP: lorsque cookie est présent, rediriger vers ... dans la configuration d'Apache:

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

2) Couche d'application: si vieux réinitialiser les cookies. Dans la page cookie_reset.php

<?php 

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

header("Location: http://www.abcde.com/"); 
0

vous pouvez essayer (php 5.3?) Ce php ini conf:

auto_globals_jit = On 

puis, setcookie (....) pour réinitialiser, après cela, l'accès _COOKIE $ à lire

+0

C'est inapplicable, le chargement juste à temps affecte seulement $ _SERVER et _ENV $. –

0

une autre possible solution peut être utiliser javascript dans une page pont

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

Et cela ne fonctionne pas :-( –

+0

désolé, essayez à nouveau (cookie au lieu de cookies) cela va fonctionner! –

Questions connexes