

クッキーはおいしいものかもしれませんが、正しく調理しないと厄介な味を残すことができます! Cookieはユーザーがブロックでき、ストレージスペースはドメインごとに4つの20kb Cookieに制限され、文字列のみを使用でき、パスは混乱を引き起こす可能性があり、データは通常HTTPヘッダーのプレーンテキストとして渡されます。多くの場合、一時的な状態データを保存する必要があるクライアント側が多いアプリケーションでは、Cookieが過剰になる可能性があります。
幸いなことに、ブラウザ内にJavaScriptデータを保存できるソリューションがあります。データはページのロード間で保持され、ページバック/次のイベント(ドメインから離れていても)に存続し、プラグインやオフラインストレージ機能を必要とせず、数メガバイトの情報で保持され、サーバーに送信されることはなく、すべてのブラウザーで動作します。奇妙なことに、それはwindow.nameプロパティ(またはwindow.top.nameを使用している場合はwindow.top.name)を悪用することで機能します。
開発者がWindow.nameプロパティを設定することはまれです。一般的に、フレームやポップアップウィンドウを操作する場合にのみ必要です。あなたがそれをしていないことを願っていますが、通常、アプリケーションの開始ウィンドウの名前を定義する必要はありません。名前のプロパティはまだ文字列ですが、数メガバイトのデータを保持できます。 Operaの一部のバージョンは、それを約2MBに制限していますが、ほとんどのブラウザは10MB以上を提供しています。
自分で試してみるのは簡単です。次のJavaScriptコードをサイトのページに挿入します。
window.name = "This message will survive between page loads.";
次のページに次のコードを追加します。
alert(window.name);
最初のページから2番目のページに移動すると、メッセージデータが保持されていることがわかります。
通常のように、多くの警告があります:
- window.nameプロパティは、別のWebサイトのページに移動すると分析および変更できます。これは、アプリケーションのメインウィンドウ内に外部リンクを提供しないことで簡単に妨害されます。ただし、安全な側にいるためには、安全なデータを保存するためにwindow.nameを使用しないでください(クライアントのみの一時的なデータストアにとって大きな問題になる可能性は低いです)。
window.nameは文字列のみを保存できます。他のデータ型や複雑なオブジェクトを保存する必要がある場合はどうなりますか?シリアル化は答えであり、幸いなことに、JavaScriptオブジェクトからJSON文字列を生成するためのクロスブラウザーコードをすでに開発しています。
参照:JavaScript用のCookie-Lessセッションライブラリの作成方法。
Cookieless javascriptセッション変数に関するよくある質問(FAQ)
JavaScriptでCookielessセッションを使用することの利点は何ですか?
JavaScriptのCookielessセッションにはいくつかの利点があります。まず、Cookieを必要とせずに複数のページにわたって状態情報を維持することにより、ユーザーエクスペリエンスを強化できます。これは、ブラウザの設定でCookieを無効にしているユーザーにとって特に便利です。第二に、Cookielessセッションは、Cookieの盗難を介したセッションハイジャックのリスクを減らすことにより、Webアプリケーションのセキュリティを改善できます。最後に、Cookieの使用を制限するプライバシー規制の順守を確保するのにも役立ちます。このセッションIDは、URLまたは非表示のフォームフィールドを介してクライアントとサーバー間で渡すことができます。サーバー側では、セッション管理ライブラリまたはフレームワークを使用して、セッションデータの作成、ストレージ、および取得を処理できます。ただし、SessionStorageに保存されているデータは、ページセッションの期間中にのみ利用可能であり、タブが閉じたときに削除されることに注意することが重要です。また、SessionStorageは、セッションデータを一意のセッションIDに関連付けるための組み込みメカニズムを提供しません。
CookielessセッションはCookie Theftを介したセッションハイジャックのリスクを減らすことができますが、URLのセッションIDを潜在的に公開することができます。このリスクを軽減するには、HTTPSなどの安全な通信プロトコルを使用し、ログイン後にセッション固定攻撃を防ぐための測定を実装することが重要です。 OWASP ZapやBurp Suiteなどのツールを使用して、これらのテストを実行できます。また、アプリケーションのセッション管理コードを確認して、安全なセッション管理のためのベストプラクティスに従うことを確認することも重要です。これは、sessionState構成要素のCookieless属性をWeb.configファイルでtrueに設定することによって行われます。 ASP.NETセッション状態モジュールは、セッションデータの作成、ストレージ、および取得を自動的に処理します。javascriptのセッション変数にアクセスできますか?
はい、SessionStorageオブジェクトを使用してJavaScriptのセッション変数にアクセスできます。ただし、これはクライアント側に保存されているデータに対してのみ機能します。 JavaScriptのサーバー側のセッションデータにアクセスするには、サーバーへのリクエストを行うためにAJAXまたは同様の手法を使用する必要があります。
Cookielessセッションの代替品は何ですか?サーバー側では、Database-Backed SessionsまたはRedisやMemcachedなどの分散セッションストアを使用できます。
以上がJavaScriptのCookie-Lessセッション変数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。