实现安全客户端会话存储(网站)的模式

时间:2013-10-02 21:00:40

标签: session cookies session-cookies

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

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

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

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

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

两个问题:

  1. 将敏感数据存储在javascript对象中比将此数据存储在会话cookie中更安全吗?
  2. 将本地会话内容作为标题发送是一个好主意(我可以进行一些优化,只在实际更改时发送,甚至只发送更改)。
  3. 实施此要求的其他任何建议?
  4. 注意:使用历史记录API在IE8中不起作用,它也不是我所需要的(即使我通过链接回到页面而不是单击“返回”按钮,页面状态也应该保​​留)。

    注意:如果在禁用cookie时解决方案能够正常工作会很好,但这并不是一个严格的要求。

1 个答案:

答案 0 :(得分:0)

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

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