0

ColdFusionで記述された古い Web アプリケーションをPHP5に移行しています。古いアプリは Cookie を使用していたため、多くのユーザーがブラウザーで Cookie を取得していました。

ドメインは同じなので、PHP5 は auto-global で古い 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 を自動ロードせずにユーザーのブラウザーから削除するにはどうすればよいですか?

ありがとう。

4

3 に答える 3

0

別の可能な解決策は、ブリッジページでjavascriptを使用することです

<script type="text/javascript">document.cookie="";</script>
于 2011-12-07T11:44:13.083 に答える
0

特定のModSecurity2ルールと PHP ブリッジ ページで解決:

1) HTTP レイヤー: Cookie が存在する場合、リダイレクト先... Apache の構成:

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

2) アプリケーション層: 古い Cookie をリセットします。ページ内 cookie_reset.php

<?php

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

header("Location: http://www.abcde.com/");
于 2011-12-09T14:44:37.430 に答える
0

このphp ini confを試すことができます(php 5.3?):

auto_globals_jit = On

次に、setcookie(....) でリセットし、この後、$_COOKIE にアクセスして読み込みます

于 2011-12-07T11:39:37.910 に答える