• 締切済み

JavaScriptによるcookieの取得

firefoxでネット巡回しています。 (A) HttpOnly属性が付与されていないcookieがパソコン内に保存されている時 悪意のあるサイトにjavascriptを仕組まれているとパソコン内のcookieを取得されるようなのですが、パソコン内に保存されているcookieの domain属性 path属性 secure属性 という3つの属性の内、1つでも悪意のあるサイトと一致しない場合は、悪意のあるサイトにjavascriptが仕組まれていてもパソコン内のcookie情報を取得できないのでしょうか? (B) HttpOnly属性が付与されているcookieがパソコン内に保存されている時、悪意のあるサイトがAjaxを使ってパソコン内のcookie情報を取得することが出来てしまうのでしょうか?

みんなの回答

回答No.2

JavaScriptで取得できる事と、攻撃者が取得する事は別物です。 JavaScriptでalert(document.cookie)とすれば、JavaScriptで取得できますが、そこに表示されている内容は攻撃者には見えません。 攻撃者が内容を見る(取得する)には、そのalert()されている内容を、何らかの形で攻撃者の元へ送信する必要があります。 >No.1補足 >という3つの属性の内、1つでも悪意のあるサイトと一致しない場合は、悪意のあるサイトはパソコン内のcookie情報を取得できないのでしょうか? 「悪意のないサイト」と「悪意のあるサイト」は、通常はdomainが違いますので、 「『悪意のないサイト』の情報を『悪意のあるサイト』が取得する事」はできません。 (cookieもサイトの情報の一つです) 悪意のないサイトに埋め込まれた悪意のあるプログラムからは、domain、path、secureの全てが一致していますから、自由に取得できます。 「悪意のあるサイト」と「悪意のないサイトに埋め込まれた悪意のあるプログラム」は別物です。 また、「悪意のあるサイト」と「攻撃者」も別物です。

motosan33
質問者

補足

>悪意のないサイトに埋め込まれた悪意のあるプログラムからは、domain、path、secureの全てが一致していますから、自由に取得できます。 gmail,yahoo mail,hotmail,amazonのアカウントにログインしたまま色々なサイトを見て回ることが多いのですが、 そうした訪問するサイトにおいて、gmail,yahoo mail,hotmail,amazonと domain、path が一致している事というのは滅多になく、gmail,yahoo mail,hotmail,amazonのアカウントにログインしたままサイトを見て回ってもcookieのセッションデータを抜き取られることはないものと考えてよいのでしょうか? google、yahooなどは色々なサービスを提供していますから、そのサービスの中にはgmailやyahoo mailと domain、path が一致していることもあるんじゃないかと少し心配です。 もちろん一番安全なのは、ログインした状態ではネットを見て回らないことだというのは分かるのですが.....

すると、全ての回答が全文表示されます。
回答No.1

ブラウザにバグがないことを前提に回答します。 >(A) >という3つの属性の内、1つでも悪意のあるサイトと一致しない場合は、悪意のあるサイトにjavascriptが仕組まれていてもパソコン内のcookie情報を取得できないのでしょうか? できません。 >(B) ブラウザがHttpOnly属性をサポートしているのであれば、できません。 もちろん(A)の前提条件がありますので、 cookieを取得するには、そのターゲットとなるサイト内でJavaScriptを実行する必要があります。 ターゲットサイト内でスクリプトを実行する方法として、 ・APIとして公開し、使用してもらう(制作者による挿入) ・ブログパーツ、ウィジェットとして公開し、使用してもらう(制作者による挿入) ・スクリプトライブラリとして公開し、使用してもらう(制作者による挿入) ・Wordpress、EC-CubeをはじめとするCMSテーマファイルやプラグインとして公開し、使用してもらう(制作者による挿入) ・BBS、SNSなどでスクリプトを投稿する(訪問者による挿入) などがあります。 (訪問者が)悪意のあるサイトにアクセスした場合ではなく、(主に制作者が)悪意のあるサイトのプログラムを使用した場合、という方が可能性としては高いと思います。 なおAjaxで送信するにはXMLHttpRequestの同一ドメイン制限がありますので、通常は送信できません。 しかし、Ajax以外の方法で送信する方法はたくさんありますので、「危険なプログラムを使わない事」というのがセキュリティーに置ける最重要課題だと思います。

motosan33
質問者

補足

>なおAjaxで送信するにはXMLHttpRequestの同一ドメイン制限がありますので、通常は送信できません。 >しかし、Ajax以外の方法で送信する方法はたくさんありますので、「危険なプログラムを使わない事」というのがセキュリティーに置ける最重要課題だと思います。 (B)の[AjaxではHttpOnly属性のcookieの取得は無理]というのは、Ajaxでは、xmlデータがjavascriptのオブジェクトとして処理されるので、cookie取得の命令も結局javascript形式となり、HttpOnly属性のところで引っ掛かってしまうので無理ということでしょうか? また、javascriptやAjax以外の >Ajax以外の方法で送信する方法はたくさん >「危険なプログラム」 によって、パソコン内のcookie取得が試みられても、 domain属性 path属性 secure属性 という3つの属性の内、1つでも悪意のあるサイトと一致しない場合は、悪意のあるサイトはパソコン内のcookie情報を取得できないのでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A