0

ページ アクセス間でページング コンポーネントの状態を保存する必要があります (具体的には、現在表示されているページ、ページごとに表示するアイテムの数、およびフィルター/検索基準テキストを保存する必要があります)。

最初は、localStorage を使用してクライアント側のローカル セッションを作成することを考えました。しかし、これは IE8 では機能しないため、IE8 ではセッション Cookie を使用するようにフォールバックします。ただし、フィルター/検索基準は機密データであるため、セッション Cookie は受け入れられません。

今、サーバーサイドのセッションストレージの利用を考えているのですが、実装を透過的にしたいと思っています。アイデアは、「ローカル セッション」と呼ばれるグローバルな JavaScript オブジェクト (または jQuery プラグイン) を作成することです。ローカル セッションの実装は、リクエストごとにコンテンツを送信します (jQuery AJAX beforeSend コールバックを使用)。したがって、すべてのリクエストは、クライアントの「ローカル セッション」の新しい状態を送信します。

サーバーは、新しくレンダリングされた各ページにすべてのローカル セッション データを含めます (つまり、非 AJAX 応答の場合のみ)。

ASP.NET MVC を使用していますが、この「ローカル セッション」データを収集してサーバー側セッションに格納するグローバル フィルターを簡単に作成できます。

2 つの質問:

  1. このデータをセッション Cookie に保存するよりも、機密データを javascript オブジェクトに保存する方が安全ですか?
  2. ローカル セッション コンテンツをヘッダーとして送信することをお勧めします (最適化を行って、実際に変更された場合にのみ送信するか、変更のみを送信することもできます)。
  3. この要件を実装するための他の提案はありますか?

注: history API の使用は IE8 では機能しません。また、必要なものでもありません ([戻る] ボタンをクリックするのではなく、リンクをたどってページに戻った場合でも、ページの状態を保持する必要があります)。

注: Cookie が無効になっているときにこのソリューションが機能するのであればよいのですが、これは厳密な要件ではありません。

4

1 に答える 1

0

ブラウザーに送信されて Cookie に保存される内容の整合性と機密性を保護したい場合は、Ruby on Rails バージョン 4 のように、サーバー側の秘密鍵を使用して値に署名し、暗号化することができます。

ただし、Cookie はリプレイ攻撃の対象となり、サイズ制限があることに注意してください。

于 2013-12-30T20:32:42.027 に答える