JavaScriptは、Cookieに基づくアクセス制限のあるサイトでAJAXが使用されている場合、Cookieにアクセスする必要があります。 HttpOnly CookieはAJAXサイトで動作しますか?HttpOnly CookieはAJAXリクエストとどのように機能しますか?
編集: Microsoftは、HttpOnlyが指定されている場合、CookieへのJavaScriptアクセスを許可しないことによってXSS攻撃を防止する方法を作成しました。 FireFoxはこれを後で採用しました。だから私の質問は:StackOverflowのようなサイトでAJAXを使用している場合、Http-Only Cookieはオプションですか?
編集2:質問2のHttpOnlyの目的は、クッキーへのJavaScriptのアクセスを防止することであり、あなたはまだXMLHttpRequestオブジェクトを通じてJavaScriptでクッキーを取得できた場合は、HttpOnlyののポイントは何ですか?
編集3:
ブラウザは、このようなクッキーを受け取り、以下のHTTP交換にいつものようにそれを使用することになっているが、それが見えるようにしない:ここでははウィキペディアからの引用ですクライアント側のスクリプトに適用されます。[32]
HttpOnly
フラグは標準の一部ではなく、すべてのブラウザで実装されているわけではありません。現在、XMLHTTPRequestを介してセッションクッキーを読み書きすることはできません。 [33]。
私は、HttpOnlyを使用するとdocument.cookie
がブロックされていることを理解しています。しかし、XMLHttpRequestオブジェクトのクッキー値を読み取ることができ、XSSを使用できるようです。 HttpOnlyはあなたをどのように安全にするのですか?クッキーを基本的に読み取り専用にすることによって?
あなたの例では、あなたのdocument.cookie
に書き込むことはできませんが、私はあなたのクッキーを盗んで、私のドメインにXMLHttpRequestオブジェクトを使って投稿することができます。
<script type="text/javascript">
var req = null;
try { req = new XMLHttpRequest(); } catch(e) {}
if (!req) try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
if (!req) try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
req.open('GET', 'http://stackoverflow.com/', false);
req.send(null);
alert(req.getAllResponseHeaders());
</script>
編集4:申し訳ありませんが、私はあなたがStackOverflowのドメインへのXMLHttpRequestを送信し、その後、正規表現アウトCookie、文字列に)(getAllResponseHeadersの結果を保存し、その後にそれを投稿できることを意味し外部ドメイン。明らかに両方のサイトが間違っている、これは実際にbug in FireFoxあるああ、:Wikipediaとha.ckersはこの1つに私と一緒に同意することが表示されますが、私は再教育を受け...
決勝を編集することが大好きです。 IE6 & 7は実際には現在、HttpOnlyを完全にサポートしている唯一のブラウザです。私が学んだすべて繰り返しに
:
- HttpOnlyのは、IE7 &でdocument.cookieへのすべてのアクセスを制限し、FireFoxの(他のブラウザについてはよく分からない)
- HttpOnlyのは、中にレスポンスヘッダからクッキー情報を削除しますIE7のXMLHttpObject.getAllResponseHeaders()
- XMLHttpObjectsは、元のドメインにのみ送信できるため、クッキーのクロスドメイン投稿はありません。
編集:この情報はおそらく最新ではありません。
私はgreasemonkeyスクリプトにあなたの例題を投げましたが、FFはクッキーを表示しなくなったようです。優れた研究と事例。 –
同じ原点ポリシーでは、スクリプトが実行されていないドメインに対してhttp要求を行うことはできません。しかし、私はあなたがwindow.locationを使用しているページにユーザーをリダイレクトし、クエリ文字列パラメータを介して情報を渡すことによって簡単にクッキーを渡すことができると確信しています。 –