この記事は、Cookie の基本を理解している読者を対象としています。外出時は左折してください
Set Cookie (HTTP レスポンス ヘッダー)
Set-Cookie: {name}={value };path= {path};domain={domain};expires={expires},secure;HttpOnly;
(複数の Cookie は複数の Set-Cookie ヘッダーを送信します)
Cookie (HTTP リクエスト ヘッダー) を送信します
Cookie: {name}={value};{name2}={value2} (複数の Cookie は ";" で区切られます)
リクエストヘッダーの形式は比較的単純です。 ここでは主にレスポンスヘッダーについて説明します
。
name | cookie name |
value | cookie value、一部の言語にはサブ cookie 実装があり、形式は {key1}={value1}&{key2}={value2} |
パス | Cookieは有効なパスです。デフォルトのポリシーは言語によって異なります。一部の言語ではデフォルトが「/」に設定され、一部の言語では現在のページが配置されているディレクトリにデフォルト設定されます |
ドメイン | Cookie の有効なドメイン名、デフォルトは現在のドメイン名です。第 2 レベルのドメイン名はメイン ドメイン名 (「.aaa.com」など、「.」で始まる必須) の下で Cookie にアクセスできます。レベル ドメイン名は、第 2 レベル ドメイン名の下にある Cookie にアクセスできます。 現在 www.aaa.com にアクセスし、ドメインを www.bbb.com に設定している場合、これはサードパーティ Cookie です (詳細は後述) |
期限切れ | 現在のセッションが設定されていない場合、Cookie の有効期間デフォルトでは、ブラウザは閉じられます。有効期限がブラウザの時刻よりも早い場合、Cookie はすぐに期限切れになります。 |
安全 | このロゴは、この Cookie のみが送信されることを意味します。 https プロトコルのリクエストでは、 |
HttpOnly | は、Cookie がサーバー経由でのみ変更を許可され、クライアント JS は変更を許可されないことを意味します |
Cookie クロスドメイン
メインのドメイン名は同じ
www.aaa.comやbla.aaa.com設定など Cookieのドメインは「.aaa.com」です
メインのドメイン名は異なります
www.aaa.comやwww.bbb.comなど サードパーティCookieを設定します
サードパーティCookie
サードパーティCookieとは何ですか?
訪問時www.aaa.com、domain=www.bbb.com の Cookie が設定されています。www.aaa.com の場合、この Cookie はサードパーティ Cookie です。
どのシナリオにサードパーティ Cookie が必要ですか。 ?
たとえば、www.tmall.com と www.taabao.com、www.sina.com と www.weibo.com など、異なるドメイン名を持つ 2 つの Web サイトが SSO を実行します たとえば、広告サービスプロバイダーは、ユーザーの閲覧履歴に基づいて、ユーザーの行動に基づいてユーザーに適した広告を推奨します (広告サービスプロバイダーがユーザーの閲覧履歴を取得できるため、プライバシー漏洩のリスクがあります)
どうやって行うのですか?
広告追跡を例に挙げると、www.ccc.com は広告サービスプロバイダーであり、www.aaa.com と www.bbb.com がその広告にアクセスしたいと考えています
www.aaa.com とwww .bbb.com すべてのページにコード行を追加します:
www.ccc.com は、ads.aspx ページにドメイン=www.ccc.com の Cookie を埋め込み、www.aaa.com と www.bbb.com のすべてのページが www.ccc に与えられるようにします。 www.ccc.com は、この Cookie を取得すると、ユーザーが閲覧しているページのアドレスを取得し、ユーザーのアドレスを把握します。閲覧行動-
上記からわかるように、広告サービスプロバイダーに十分な顧客がいる場合、このユーザーが訪問する Web サイトのほとんどがこのサービスプロバイダーの顧客である可能性があるため、広告サービスプロバイダーはユーザーの閲覧行動のほとんどを把握できます。クッキーを共有します
ブラウザ設定
ブラウザ
サードパーティCookieをサポートするかどうかのデフォルト設定 | DNT設定 | サードパーティCookieをブロックする方法 | クロム |
はい 設定 - ブラウザで追跡拒否リクエストを一緒に送信します | 設定 - コンテンツ設定 - サードパーティの Cookie とサイトデータをブロックします | | Firefox |
はい オプション - プライバシー - この Web サイトにアクセスしないように依頼しますあなたを追跡します | オプション - プライバシー - カスタム履歴設定を使用する - サードパーティ Cookie を受け入れる - 常に許可するとは限りません | | IE |
追加の P3P 応答ヘッダーが必要です オプション - 詳細 - 訪問したサイトに「追跡拒否」リクエストを送信しますIE の場合 | オプション - プライバシー - 詳細 - 自動 Cookie 処理の代替 - サードパーティ Cookie - ブロック | |
IE のデフォルトのセキュリティ レベルは中です。これにより、合理化されたプライバシー ポリシーを持たないサードパーティ Cookie がブロックされます。P3P プロトコルの詳細については、http://www.w3.org/ を参照してください。 P3P/。 P3P の例を次に示します。
P3P:CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
DNT が設定された後、DNT:1 がリクエストヘッダー。Web サイトが DNT プロトコルに準拠している場合、サードパーティ Cookie は植えられなくなりますが、不正行為を行って準拠しないこともできます。すべては品質次第です
-
ユーザー設定がサードパーティをブロックしている場合Cookie を使用すると、申し訳ありませんが、すべてのサードパーティ Cookie が無効になります
Cookie のセキュリティ
Cookie はユーザーの身元を記録するため、開発者が少しでも注意を怠ると、攻撃者の一般的なターゲットになります。 、その整合性が損なわれる可能性があります
考えられる攻撃方法については、Baidu を参照してください。 つまり、Cookie を信頼せず、暗号化されていない機密情報を Cookie に含めないでください。サードパーティ Cookie の存在により、機密性の高い操作には検証が必要です。操作している人が現在ログインしているユーザーであるとは考えられません
XSS、リフレクト XSS、セッション ハイジャック、CSRF 攻撃
サードパーティ Cookie コードの例 (asp.net)
www.ccc.com は広告サービス プロバイダーであり、www.aaa.com および www.bbb.com はその広告にアクセスします
-
変更ホスト
127.0.0.1 www.aaa.com www.bbb.com www.ccc.com
ログイン後にコピー
www.ccc.com 広告サービス プロバイダー ads.aspx コード
private static IDictionary<string,IList<string>> histories = new Dictionary<string, IList<string>>();<br />protected void Page_Load(object sender, EventArgs e){ Response.ContentType = "text/javascript"; //用户开启了浏览器"不跟踪"选项 if (!string.IsNullOrWhiteSpace(Request.Headers.Get("DNT")) && int.Parse(Request.Headers.Get("DNT")) == 1) { Response.Write(@"document.write('用户开启了浏览器Do Not Track选项,我比较讲究,遵守这个约定,不跟踪你了,只能给你展示大众版的广告了');"); return; } var uuid = Request.Cookies["uuid"]; //种第三方cookie if (uuid == null) { uuid = new HttpCookie("uuid") { Value = Guid.NewGuid().ToString(), Domain = "www.ccc.com", Expires = DateTime.Now.AddYears(70), }; Response.Cookies.Add(uuid); //使用P3P协议提高cookie种上的概率 Response.Headers.Add("P3P", "CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\""); } //获取用户正在浏览的网址 var referer = Request.Headers.Get("Referer"); //记录用户访问历史 if (!histories.ContainsKey(uuid.Value)) { histories[uuid.Value] = new List<string>(); } histories[uuid.Value].Add(DateTime.Now + ": " + referer); Response.Write(@"document.write('<br><br>blabla这里是根据你浏览的网址给你推荐最合适的广告'+ ',不要问我怎么知道哪个网址有什么内容,也不要问我怎么知道哪些广告最适合你,我会告诉你我有高大上的算法嘛<br><br>');"); Response.Write(@"document.write('下边是你的浏览记录(不好意思,我看到了羞羞的东东):<br>');"); foreach (string history in histories[uuid.Value]) { Response.Write("document.write('" + history + "<br>');"); }}
ログイン後にコピー
-
www.aaa.com および www.bbb.com ページ コード
れーれー
www.aaa.com と www.bbb.com ページを開きます
Alien falsh cookie
この商品は変態すぎますそしてそれはこの範囲内ではありません興味があれば、Baidu で自分で試すことができます
一言で言えば、クッキーは乾燥できます。クッキーにはできないこともできます。もちろん、クッキーにはない問題もあります。