エクスチュア総合研究所ホームエクスチュア株式会社コーポレートサイトエクスチュア株式会社ブログ最速で理解したい人のためのIT用語集お問い合わせエクスチュア総合研究所エクスチュア株式会社のインターンによるブログmenuホームブログCookieについて調べてみたブログ2016.02.29Cookieについて調べてみた前回の記事で、Cookieとはサーバー側がクライアント側に与える名前のようなものだ、と述べた。今回はCookieがどのように発行されるのか、や実際のPCでどのように管理されているか、などといったCookieの実体に迫ってみようと思う。自分が現在どのようなCookieを保持しているのかをエクスチュアのページを例に確認してみよう。Cookieとサイトデータから簡単に確認ができる。このようにエクスチュアでは14個のクッキーを発行しているようだ。これらのCookieが実際に発行される様子を見てみよう。CookieはHTTPリクエストヘッダ内のCookie項目で宣言されなかった場合、レスポンスヘッダ内のSet-Cookie項目で発行される。新たにCookieが発行されるはずである。実際にやってみた様子がこちら。このようにCookieが新たに発行され、Chromeの管理下に追加されたことが確認できる。この後にページをリロードしてみると、先ほど発行されたばかりのCookieが、リクエストヘッダのCookie項目で宣言されていることも確認できた。このようにCookieがHTTPレスポンスヘッダで発行され、リクエストヘッダで宣言されていることが分かった。ところでChromeは今までに発行されたCookieの情報をどこに記憶しているのだろうか。Data/DefaultにCookiesという名前のSqliteファイルとして管理されていることが分かった。実際にSqlite3を操作して、中身を覗いてみよう。先ほど発行されたCookie(らしきもの)が確認できた。残念なことにvalueカラムが表示されず、これが本当に先ほど発行されたCookieなのか確信が持てない。Chrome33.0からvalueを暗号化して、encrypted_valueカラムに登録するようになったらしく、これを復号化しなければvalueが手に入らないようだ。どのようにして複合化すれば良いのか。Googleの力を借りてcookie-issue-with-chrome-33-betaというページにたどり着くことができた。OSが提供しているDPAPIという暗号および複合化用のAPIを使って行われているらしい。この場合、暗号化時と同じユーザーで実行されているアプリケーションによって複合化することが可能なようだ。上記のサイトのPythonスクリプトは、ctypesという動的ライブラリ(dll)を呼ぶための標準ライブラリを使ってDPAPIを操作し、複合化を行っている。nameカラムが”__cfduid”、となっているレコードのencrypted_valueカラムを複合化して表示するスクリプト、CookieDecrypt.pyを書いた。decrypt(cookie[4])));このスクリプトの実行結果が次。無事復号化に成功し、このレコードが先ほど発行されたCookieであると判明した。関連記事ブログダッシュボードに使うべき10のグラフ1こんにちは!インターン生の山本です。今回も引き続きダッシュボー...ブログ東南アジアのデジタルマーケティングこんにちは!インターン生の山本です!今回は...ブログIPアドレスとはこんにちは。インターン生の藤本です!今日はIPアドレスについて説明...ブログダッシュボードに使うべき10のグラフ3こんにちは!インターン生の山本です。前回はブレットグラフをご紹...ブログダッシュボードでよくある間違い1こんにちは!インターン生の山本です。Practitionerが変わりました。