2016-04-09 17 views
2

Webアプリケーションで作業している私は、一部の訪問者のブラウザが以前スクリプトから受け取ったことのないクッキーをサーバーに送信していることに気付きました。ブラウザがサーバーから受信していないCookieを送信すると、

私のスクリプトはセッションCookieのみを設定し、ログインしたユーザーのみが設定されるため、これらの訪問者は自分のブラウザにCookieが設定されていないことを保証します。

サイトにJSがありません。プレーンHTML + CSS。

このように動作するブラウザは、ChromeとSafariです。

これはどうして起こりますか?これらのクッキーは何ですか?

これらの訪問者に対して、ブラウザの動作が異常であるという警告メッセージを表示する必要がありますか?

+1

これらのCookieを送信すると、その出所を特定するのに役立ちます。 – Rei

+0

残念ながら、私はそれらを保管していませんでした。クッキーを処理するバグが原因で、私のサーバー側のエンジンがクラッシュしたためにのみ、この効果に気付きました。バグは修正されましたが、何らかのトラップを書いてから、これらのクッキーを取得するために特別な訪問者を待つ必要があります。 – johnfound

+1

あなたが待っている間、すべてのクッキーを記録してください。しかし、あなたのエンジンはクッキーのために墜落しましたか?それには何か問題があります。たぶんあなたは、コードレビューでコードを投稿するべきです。 – Rei

答えて

3

サイト運営者は、サイトにアクセスしているブラウザのクッキージャーにCookieを設定するようリクエストできます。あなたのサイトが機能するために必要なセッション間でのクッキーの永続性の維持を選択することができます(ユーザーがログインしたままにするためにセッションクッキーを提示する必要があります)。しかし、あなたはクッキージャーを「所有している」わけではなく、あなたが設定したセッションクッキーとともに他のクッキー(セッションクッキーと永続クッキーの両方を含む)を提示することはできません。一般に、あなたのコードはあなたが期待するクッキーを探し、期待していないクッキーは無視しなければなりません。彼らがあなたの支配下にないためにあなたが期待していなかった "余分な"クッキーの存在に基づいて何らかの行動を取ることは、良い習慣ではありません。

ユーザーは、ブラウザの助けを借りて、クッキージャーを制御するユーザーです。クッキーの取り扱いを完全に無効にするか(またはクッキーをサポートしていないクライアントを使用する)かを選択できます。あなたのセッションクッキーが期待どおりに戻ってこないことが判明した場合、クライアントがクッキーをサポートしていないか、フォールバックを実装していないと思われることをユーザーに知らせることが良いでしょうクッキーを必要としないセッション管理を計画していますが、私の意見では、「余分な」クッキーが受信された場合に警告メッセージは適切ではありません。

ユーザーはブラウザを制御するので、クッキージャーを手動で編集することで、ブラウザに好きなクッキーを設定できます。サイトのドメインとパスに適用されるCookieが設定されている場合、クライアントはそのCookieをHTTPリクエストとともにサイトに送信します。

また、サイトがドメインの一部を他のサイトと共有している場合、他のサイトはサイトにも表示されるCookieを設定することがあります。たとえば、サイトがhttp://site1.example.com/にアクセス可能で、別のサイトがhttp://site2.example.com/にある場合、site2のオペレータはexample.comに設定されたドメインでCookieを設定できます。その場合、site1site2(およびその他のサブドメインはexample.com)。

あなたが管理しているドメインでしかサイトにアクセスできない場合でも、ブラウザーで「スーパークッキー」防止機能が無効になる可能性があります(「.com」などのトップレベルドメイン名に設定されたCookie) 。通常、ブラウザはこれらの「公開サフィックス」(https://tools.ietf.org/html/rfc6265#section-5.3を参照)を許可しないでください。ただし、高度なブラウザ設定で無効にすることは可能です。

他のドメインのCookieを使用してサイトを攻撃する可能性を回避するには、CookieのドメインとパスとCookieの値自体が一致することを確認することをお勧めします。

2

要求がサーバーに作られている上に、追加のクッキーを投げるかもしれない、私はそれを考えることができ、少なくとも3つのベクトルがあります、XSSエクスプロイトいたずら広告やCDNがサービス提供:

  • 意図しないスクリプトがページ上で実行されています変更されたバージョンのファイルは、ページのコンテキストでJavaScriptを実行し、Cookieを設定します。
  • 奇妙なクライアント:サーバーへのリクエストでユーザーが任意のガーベジを送信することを防ぎ、追加のCookieを簡単に追加できます。これらの要求が奇妙に表示される可能性のあるリクエストヘッダーについて他のものを記録していますか?誰かがブラウザのクッキー・ジャーをちょうど回っていると、変更されたクッキーを超えてそれが表示されることはありません。
  • 奇妙なネットワークまたはプロキシ:HTTPSは、誰かのリクエスト(クッキーヘッダー付き)またはサーバーの応答(セットクッキーヘッダー付き)がサーバーに到達する前にかなり簡単に変更できることを意味します。奇妙なクッキーが特定のIPまたはIP範囲から来ている要求ですか?

つまり、クッキーは、何らかの防弾機構ではなく、サーバーとクライアントの協力を得て動作します。

にはがあります。これらのクッキーのいずれかが見つかったら、最も単純なもの(delete themになります)があります。

関連する問題