0

我需要在页面访问之间存储分页组件的状态(特别是我需要保存当前查看的页面、每页显示的项目数以及过滤/搜索条件文本)。

起初我考虑使用 localStorage 创建客户端本地会话。但这在 IE8 中不起作用,所以我在 IE8 中回退到使用会话 cookie。但过滤/搜索条件是敏感数据,因此会话 cookie 是不可接受的。

现在我正在考虑使用服务器端会话存储,但我想让实现透明。这个想法是创建一个名为“本地会话”的全局 javascript 对象(或 jQuery 插件)。本地会话实现将随每个请求发送其内容(使用 jQuery AJAX beforeSend 回调)。因此,每个请求都会发送客户端“本地会话”的新状态。

服务器将在每个新呈现的页面中包含所有本地会话数据(即仅用于非 AJAX 响应)。

我正在使用 ASP.NET MVC,很容易创建一个全局过滤器来收集这个“本地会话”数据并将其存储在服务器端会话中。

两个问题:

  1. 在 javascript 对象中存储敏感数据是否比在会话 cookie 中存储这些数据更安全?
  2. 将本地会话内容作为标头发送是个好主意吗(我可以做一些优化,只在它实际更改时发送,甚至只发送更改)。
  3. 实施此要求的任何其他建议?

注意:使用历史 API 在 IE8 中不起作用,它也不是我所需要的(即使我通过链接返回页面,而不是单击 BACK 按钮,页面状态也应该保​​持不变)。

注意:如果解决方案在禁用 cookie 时能正常工作,那就太好了,但这不是严格的要求。

4

1 回答 1

0

如果您想保护发送到浏览器以存储在 cookie 中的内容的完整性和机密性,您可以使用服务器端密钥对值进行签名和加密,例如 Ruby on Rails 版本 4。

但是,请记住,cookie 会受到重放攻击,并且存在大小限制。

于 2013-12-30T20:32:42.027 回答