クッキー安全


クッキーのdomian,path,expiresは、クッキー操作でよく使われます
しかし、クライアントブラウザにとってこれらはdocumentによって可視である.cookieは直接スクリプトの中で出力することができて、ここは簡単にいくつかjsスクリプトに注入されて、地元のcookieを取得して、他の場所に送って、プライバシーを漏らして、みんなはsessionが安全だと思っているかもしれませんが、通常は某某の大侠が、sessionはサービス側に保存されていて、cookieより安全だと言っているのを耳にしますが、某某の大侠は本当にhttpプロトコルを知っていますか?httpプロトコル仕様はhttpが無状態プロトコルであることを定義していますが、なぜサービス側で状態を保存できるのか、私が書いたsessionの原理を見てみることをお勧めします.
tomcatを使ったことがある人はみなjsessionidというものがあることを知っていると信じています.これはサービス側がクライアントの状態を維持するために、通常クライアントcookieに書き込まれるjsessionidというパラメータです.このcookieの有効期間はプロセスです.つまりブラウザを閉じることです.つまり失効します.クライアントがcookieをサポートしていない場合、サービス側はurl rewrite技術でクライアント要求urlを書き換えることができます.つまりクライアントがurlを要求するとjsessionid=xxxxxというパラメータが加わるが、結局クライアントにjsessionidという情報が保存されており、cookieとurlのパラメータはいずれもローカルに植え込むスクリプトに取り込まれ、firefoxのfirebugを開き、コンソールにdocumentを入力することができる.cookie;ほら、すべてのクッキー情報はすべて中に入っていて、IEの中でアドレスバーにjavascript:alert(document.cookie)を直接入力することができます.クッキーの中の情報も見られるので、このように保存されているクッキーがハッカーに注入されたスクリプトで入手されると、jsessionidのようなものを他の場所に送信することができます.
spring securityのようなセキュリティフレームワークを含むセッションを使用してユーザーのログイン状態を検証する人が多く、デフォルトではセッションを使用してユーザーの状態情報を保存しているので、あるユーザーがログインしたら、jsessionidはハッカーのスクリプトを通じて、その場所に送信することができ、ハッカーは直接jsessionidパラメータをurlを要求した後に貼ることができ、すべての検証は余裕を持って破れます.
  
このような問題に対して、http onlyのクッキーを採用することで、ローカルスクリプトがこのクッキーを得ることができなくなり、httpプロトコルのプログラムを通じてのみこのクッキーを使用することができ、クッキー制限domianを加えて、悪意のあるスクリプトがクッキーを漏らすことを防止する目的を達成し、原理に基づいてhttp onlyクッキーを見るのは簡単である.

Set-Cookie  ASP.NET_SessionId=h1tgc555io1lav2dfi1pqdiq; path=/; HttpOnly

一般的なクッキーよりも、バックエンドにHttpOnlyの文字列が入っているだけで、この仕様はインターネットExplorer 6 SP 1で導入されています(マイクロソフトに好感を持つのは初めてです^!^)、現在の主流ブラウザではfirefox、chromeがサポートされていますが、このようなクッキーであればdocumentをローカルで使用します.クッキーは得られません.ブラウザはdomにクッキーを隠していますが、sunのapiはまだ属性変更をサポートしていません.javaで使うには、対応するクッキーヘッドを手動で設定するしかありません.HttpOnlyを加えて、sunにはoracleではないことを望んでいます.カップ、できるだけ早く支えてください.