jQuery JavaScript有一种监听cookie更改的方法

时间:2013-05-05 21:10:02

标签: javascript jquery cookies

是的,不知道给这个题什么样的头衔。但我刚才有一个随机的想法,我甚至不知道它是否可能,我猜不会,但希望有人能明确地告诉我是/否。

整体问题来自于在DOM中监听事件的概念,这让我想到可以使用cookie。知道我将我的cookie存储为变量,一般在页面加载时。我可以将它与它改变的事件进行比较。我所拥有的是2个不应该改变的cookie,除非它们被脚本删除。所以我想听听他们,看看他们是否改变就像让用户说进入浏览器并以某种方式改变价值。如果发生这种情况,我想基于此做点什么。

我知道我无法通过诸如firebug浏览器或其他控制台之类的东西来改变任何事情。但是,希望知道

  

var myCookie = cookie;

当页面加载时,如果可以监视更改,我可以使用myCookie进行比较,以确保页面加载时的变量与现在尝试使用的变量相同。

那么甚至可以远程实现吗?是否有一种方法可以像大多数DOM元素一样监听cookie更改,或者它是一个管道梦想以及无法监控的浏览器级别的安全问题?

1 个答案:

答案 0 :(得分:1)

无法知道Cookie在页面生命周期之外的更改时间。当您的页面未加载时,您的页面代码甚至没有运行,因此可以根据任何人的需要更改cookie,并且不会运行任何代码来监视此类更改,即使存在此类事件也是如此。

我能想到的可能的替代解决方案是:

  1. 将数据服务器端存储在您控制存储安全性的位置。您可能需要登录系统,或者您可以对浏览器进行唯一cookie(如购物车),这样您就可以知道哪个服务器端数据属于此浏览器。然后,用户永远不会在没有您参与的情况下修改数据。
  2. 将数据存储在多个位置,然后比较每个地方的值。这并不妨碍确定的黑客最终搞清楚你的​​系统,但这比仅仅编辑cookie值要困难得多。例如,您可以将值存储在几个cookie和本地存储中。它甚至可以在flash中存储类似cookie的东西。请注意,这比实际的安全性更具障碍,但除了真正坚定的黑客之外,它可以阻止任何人。
  3. 加密和校验和数据,因此如果没有您确定已经编辑过或没有人首先确定您的加密或校验和算法,就不容易编辑。同样,这是一个障碍,但它阻止了随意的cookie编辑。
  4. 将数据存储在服务器上是唯一可以实现真正安全性的选项。


    如果您只是想在页面加载时查看cookie是否被更改,那么您只需将页面加载时的cookie值加载到变量中,然后使用setInterval()定期轮询cookie值。看看它是否被修改过。或者,如果您只想知道它是否在页面中的某些执行点被修改(如表单提交之前),您可以在这些时间点检查当前cookie值与原始变量的对比。