Zend Frameworkで作ったアプリで、大きくハマった。

CSRF対策としてZend_Form_Element_Hashでハッシュ値をログインフォームに埋め込んでいたのだが、アプリを新しいサーバに乗せて動かしてみると、何度やってもログイン時にハッシュのエラーで弾かれる。

初めは純粋にハッシュで問題が起きているのかと思ったが、散々調べても何も問題は見当たらない。。

ハッシュを外して認証を試みようと考えて外してみたところ、DBの接続設定に問題があってサーバが500エラーを吐いていた。
(PHPはエラーログを吐いていなかった。。なんじゃろ?

何で500エラーなのにハッシュのエラーが出るんだ?と思って調べていたところ、Apacheのアクセスログに妙な痕跡が。
ブラウザが500エラーを受け取ったあと、勝手に再リクエストを試みていたようだ。

流れ的には、

(1)ログイン試行
(2)ハッシュOK
(3)ログイン情報をDBと照合⇒DBに接続出来ず500エラー
(4)勝手に再リクエスト
(5)(2)でハッシュ使用済みなので、ハッシュでエラー
(6)画面にはハッシュのエラーが表示される

という感じ。

どうもプロキシか何かの影響で、500エラー時は勝手にリクエストがかかるようになっていたらしい。。

何か他のところでもハマることがありそうなので、一応メモ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Name *
Email *
Website

*