Phalcon CSRF issue with Chrome

主因是 Chrome 瀏覽器有些行為很奇怪。

在這篇(https://forum.phalcon.io/discussion/922/csrf-protection-not-working#C6649)討論裡面有提到,Chrome瀏覽器在 background 會去 request /favicon.ico 與 /robots.txt,但是一般網站如果沒有這兩個檔案,會造成 Chrome 瀏覽器會重發一次 request 導致產生新的 session token,但是問題是在登入表單上的 token 早就已經產生了,所以之後怎麼做 forgery 驗證都會失敗。

懶惰的解法就是放個 /favicon.ico 跟 /robots.txt,或者直接在 web server 設定回傳 http status code 204。以 apache2.4 來說可以直接在 .htaccess 寫

RedirectMatch 204 /robots.txt
RedirectMatch 204 /favicon.ico