エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【Laravelネタ】なぜか、特定のページでcsrfトークンミスマッチがたくさん出る【521日目】

バグの解決依頼が来ました

今日の私のお仕事は、既存でバグが起こってるっぽいから、直して!ってお話!

さあ、何が起こってるのかな〜?

csrfトークンが一致しないよ

IlluminateSessionTokenMismatchException

なるほどなるほどー?

これは、Laravelの機能で、postリクエストするときに一緒に送っている、csrfトークンが合ってないってやつですね。

発生原因の仮定

  1. csrfトークンの期限切れかな?→めっちゃ長い期間を期限にしてた

  2. ユーザーがクッキー消してやってるのかな?→毎日数件起こってる

  3. csrfトークンの設置忘れ?→正しく動作してる時あるからそれはない

なぜだ・・・

共通点を探そう

ってことで、共通点がないか探してみた。

laravel.logで、エラーを確認。
同時刻のnginxログを漁り、ユーザーのアクセスページを特定。

なるほど、特定のページだけめっちゃエラー出てるね。

にらめっこした

なんでだ?なぜこのページだけエラーが出るのだ?

ここはユーザーのログインページ。

普通にログインできてしまう。

なぜだ。。。1., 3.でもない。2.か?

でもなぜみんな2.をする?みんながみんな、クッキーを削除することあるか・・・?

そこにやつはいた

『ログインに失敗してしまう、そんなユーザーの皆様は、こちらを参考にしてみてくださいね!』

・・・?なんだこれは、え、なに、もしかして・・・

そこに、、、

クッキーを消す方法が、おすすめされていた

(;・∀・)

バグじゃないし、ユーザーにクッキー消せっておすすめしてたら、そりゃみんなクッキー消すよな!!!!

くっそ、見つけた時めっちゃ気持ちよかったけど、過去最高にもやっとした!!!

ってことで、これの対策をどうするかを考える予定・・・

最後に、教訓。

滅多にないパターンだと思いますが!

コード的に明確なバグじゃなくても!

たった少しの誘導で、問題は発生する!!!

いい、勉強になりました、、、