INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
本業の方のお仕事が再び忙しくなりつつあるので、断続的にしばらく更新が止まることがあります。

目次 | ←前へ / 2014-08-31 00:00 / 次へ→ / 最新へ⇒

■ファイアウォールに食われてしまったクッキー

2014/ 8/31 0:00:00


RSSRSS配信中

https://www.inasoft.org/








8月28日のJavaScriptで設定したクッキーってPHPで読み込めないのかな?の続きです。とはいえ、追記記事の方で、すでに推測しているとおりで当たっていたので、特に追加で書けることもないですかね。

結局は、さくらのレンタルサーバ上で動いていた、Webアプリケーションファイアウォール(WAF)が原因となっていました。詳細はこちらで。

もちろんこの設定は私が行ったものではありましたが、実際の製品であるJP-SecureのSiteGuardについて、あまりにも知識が不足していた・・・というか、何をやっているのかは分からないけど、とりあえず自分が作成しているスクリプトが完璧なわけはないからファイアウォールは必須だなくらいの考えで設置していたものでした。

それがまさか、自分の焼いたクッキーをむさぼり食われる結果になってしまったとは・・・。

というか、自分が今まで自分のサイト上で、次のようなことを一度もやったことが無かったんですね。

  • サーバサイドスクリプトで生成したクッキーを、クライアントサイドスクリプトで読むこと。
  • クライアントサイドスクリプトで生成したクッキーを、サーバサイドスクリプトで読むこと。
考えてみたら、そんなチャンスは一度も無かったんだなぁ。

ちなみに、WAFが原因により、こんなようなことが起きていました。

  • クライアントサイドスクリプト(JavaScript)で作成したクッキーは、WAFで止められ、サーバサイドスクリプト(PHPやPerl等)には伝わらない。Webページの内容をサーバが返却するとき、WAFがクッキーの情報を再び付加してクライアント側に返していた。
  • サーバサイドスクリプト(PHPやPerl等)で生成したクッキーについては、名称が変えられ(名称の冒頭に "ENC_" が付く)、その内容も暗号化される。また、httponlyが付くため、JavaScriptから読むことができない。
これらの設定は、個別に解除することはできませんので、この挙動が嫌な場合はWAFそのものを無効にする必要があります。

ただ、サーバのログを見てみると、日々、大陸やら半島やら国内からの、ウイルス感染PCからと思われる猛烈なラブアタックが繰り返されているのが見て取れるため、そう安易にWAFを無効にするのは危険です。

というわけで、打開策として次のようなことをすることになりました。

ちなみにそもそも、やりたかったこととしては、

  • クライアントからの指示でサーバの挙動を変えたいが、一回指示すれば以後は指示がなくともその設定を維持する
というようなことでした。

(ぶっちゃけていうと、iPhoneからアクセスしたときにスマホデザインで表示されるサイトについて、スイッチ用のリンクをタップするとPC用の表示になり、以降は再びスイッチ用のリンクをタップするまでは(ブラウザを再起動した後も)PC用の表示を維持する、という、よくあるソリューション)

というわけで、解決策としては、


  • クライアントからは、GETパラメータ(URLの後ろに ? をつけて、その後ろに書くやつ)を利用して、サーバに意思を伝える。
  • サーバはGETのパラメータを見て、クッキーを生成しつつ、PC用の表示に切り替える。
  • サーバで見ることのできるクッキーが生成されたので、以後はクライアントからの指示が無くともPC用の表示を続けることができる。
という感じ。

ややこしいが、ファイアウォールを乗り越えるためだ。致し方ない。







目次 | ←前へ / 2014-08-31 00:00 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。




2554510 (+0210)[+0573]

Copyright© 2010-2021 INASOFT