1

是的,不太确定该给它起什么样的标题。但我刚才有一个随机的想法,我什至不知道它是否可能,我猜不是,但希望有人能明确地告诉我是/否。

整个问题来自于在 DOM 中侦听事件的概念,这让我想到是否可以使用 cookie。知道我的 cookie 通常在页面加载时存储为变量。我可以将它与它发生变化的事件进行比较。我所拥有的是 2 个 cookie,除非它们被脚本删除,否则它们永远不会改变。所以我想听听他们的意见,看看他们是否会改变,比如用户进入浏览器并以某种方式改变值。如果发生这种情况,我想在此基础上做一些事情。

我知道我无法通过诸如萤火虫浏览器或其他控制台之类的方式对它们进行物理更改。但是,希望是知道

var myCookie = cookie;

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

那么这甚至可能吗?是否有一种方法可以像大多数 DOM 元素一样监听 cookie 更改,或者它是白日梦和无法监控的浏览器级别的安全问题?

4

1 回答 1

1

无法知道 cookie 何时在您的页面生命周期之外更改。当您的页面未加载时,您的页面代码甚至没有运行,因此任何人都可以更改 cookie,并且您的任何代码都不会运行以监控此类更改,即使存在此类事件。

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

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

将数据存储在您的服务器上是实现真正安全的唯一选择。


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

于 2013-05-05T21:50:39.583 回答