symfonyのフォームでIEの場合だけCSRFエラーになっていた件

結果としてはIEのセキュリティ制限でCookieが設定されていなかったようです
1
たこにぃ @takonixi

symfonyでログイン画面を作ってたんだがIEでアクセスするとcsfrエラーになってログインできないバグ取りに時間がかかった。。。まさかそんなところだったとはって感じです

2010-06-17 02:09:22
Hidenori Goto | COO and CTO at KabuK Style @hidenorigoto

@t_katsura 通常だと、echo $formでCSRF用のHIDDENも出力されるはずです。 単一の画面で処理しているフォームで発生しますか? また、出力されているHTMLに_csrf_tokenのHIDDENフィールドがあって値が入っているかも確認してみてください。

2010-06-17 09:56:08
たこにぃ @takonixi

@hidenorigoto わざわざありがとうございます。 echo $formだけでも確かにcsrfのhidden要素である_csrf_tokenは出力されているのですがFirefoxではログインできているのになぜかIEだとログインできないのです。

2010-06-17 21:09:50
たこにぃ @takonixi

@hidenorigoto sfDoctrineGuardPluginのログイン画面で実行すると「csrf token: CSRF attack detected.」と同じように出てしまいます。FFだと入れるのにIEだと入れないです、、何かわかりますでしょうか?

2010-06-17 21:16:25
Hidenori Goto | COO and CTO at KabuK Style @hidenorigoto

@t_katsura なるほど。CSRFの処理はPHPのセッションも関連するのですが、IEでCookieをすべて拒否しているようなことはないでしょうか? #symfony_ja

2010-06-17 21:20:13
たこにぃ @takonixi

@hidenorigoto Cookieが拒否されてるかもとは思いCookieを全許可にしたりキャッシュを消したりはしてみましたが同じような感じです。 とりあえず今はまだIEとFFしかテストしていないのでIEのエンジンを使ってるスレイプニルでも入れてみます

2010-06-17 21:29:24
たこにぃ @takonixi

@hidenorigoto 各種ブラウザを入れてテストしてみたところFF,Opera,SafariはOKでしたがIE8,スレイプニル(IEのエンジンを使ってるだろうから当然かもしれませんが)がcsrf token: CSRF attack detected.という結果でした。

2010-06-17 21:40:34
たこにぃ @takonixi

@hidenorigoto IEのバージョンは8です 今しがたIETesterを入れて各種バージョンIE8,IE7,IE6,IE5.5で見てみたところIE5.5だけが「csrf token: CSRF attack detected.」が出ずにログインできました

2010-06-17 21:54:40
Hidenori Goto | COO and CTO at KabuK Style @hidenorigoto

@t_katsura IE8でしたら、ツール→開発者ツールを開いて、キャッシュ→Cookie情報を表示する、を選択するとcookieの情報を確認できるのですが、symfonyという名前のcookieは出てきますか?

2010-06-17 22:09:06
たこにぃ @takonixi

@hidenorigoto E8の設定ではすべてのCookieを受け入れるにしてるんですけれどCookie一覧の画面上ではsymfonyのCookieは出てきませんでした。

2010-06-17 22:24:34
Hidenori Goto | COO and CTO at KabuK Style @hidenorigoto

@t_katsura うーむ、よく分かりませんねぇ。ちなみにこちらのIE8で、sfDoctrineGuardPluginを使っている認証などは問題なくできていますので、なんらかのIEの設定の問題だとは思うのですが・・・・。何か分かりましたら、またリプライさせていただきます。

2010-06-17 22:58:27
たこにぃ @takonixi

@hidenorigoto ありがとうございます。問題の箇所が判明しただけでも大分助かりました。

2010-06-17 23:03:31
たこにぃ @takonixi

@hidenorigoto 会社からなのでテストはできていませんが たぶん問題が解決いたしました。 symfonyには直接関はありませんでした。 ローカルで環境を作っているのですがドメイン名が「xxx_app」という感じで「_」を用いていたのが原因でした。

2010-06-18 10:23:05
たこにぃ @takonixi

@hidenorigoto _があるとIEではクッキーに保存できないのですね hidenorigotoさんのおかげで問題の切り分けができたので解決いたしました。 ありがとうございます。

2010-06-18 10:26:25
Hidenori Goto | COO and CTO at KabuK Style @hidenorigoto

@t_katsura なるほど、ドメイン名にアンダースコアがあるとIEでCookieを書き込めないんですね。私もそれは初めて知りましたw 解決されたようでなによりです。

2010-06-18 12:56:18