【问题标题】:Removing sensitive URL data from borwser history从浏览器历史记录中删除敏感的 URL 数据
【发布时间】:2020-05-10 11:20:36
【问题描述】:

我有一个这样的网址:

https://localhost:8081/test.php#param1=test&param2=sensitivedata

“param2”参数有点敏感,所以我不想让它出现在浏览器的历史记录中。

我正在使用以下代码:

window.location.replace("#");

这有效地从 Chrome 中的用户历史记录中删除了数据,但数据仍保留在 Firefox 中。 有没有办法在 Firefox 中做到这一点?

我试过了

history.replaceState(null, null, ' ');

但这不适用于 Chrome 或 Firefox,数据仍保留在用户历史记录中。

提前致谢

【问题讨论】:

  • 只需向应用中的“安全”路由发出请求,并在后台处理逻辑
  • 用户的入口点必须是通过邮件发送给用户的单个 URL,例如“重置密码”链接,不同之处在于令牌不会过期,所以我不希望它如果可能的话,留在历史中。
  • 不是答案,但您应该尽量避免使用 GET 请求发送敏感数据,尤其是当您不使用 HTTPS 时。请改用 POST。
  • @Noodles 是的,我知道,但情况就是这样(见上面的评论)。关于https,当然最终版本会有https。
  • 总的来说,我认为您不应该将敏感数据发送到浏览器。假设您发送的所有内容(包括 URL 中的参数)都将被保存并再次播放。如果您将令牌放在头条新闻中,请在必要时使用后端来验证和过期它们。相信浏览器历史记录会被删除是非常不安全的。

标签: javascript google-chrome firefox browser-history


【解决方案1】:

好吧,经过一些研究,似乎不可能做我需要的事情。据此bug report

对于 Firefox:history.replaceState 创建新的历史记录项

Chrome 28:location.replace 和 history.replaceState 都创建新的 全局历史 UI 中的条目。 Chrome 30:location.replace 更新 现有条目 history.replaceState 创建新条目 Opera 12: location.replace 和 history.replaceState 都不会创建新条目 (但不更新现有条目) Opera 15:有时 location.replace 创建一个新条目,有时它会更新现有条目 一(不知道标准是什么)。 history.replaceState 总是 创建一个新条目。 Safari 6:location.replace 和 history.replaceState 在全局历史 UI 中创建新条目。

所以似乎没有可靠的方法从用户历史记录中删除数据。

【讨论】:

    【解决方案2】:

    嗯,不妨一起试试这些解决方案:

    【讨论】:

      猜你喜欢
      • 2017-07-01
      • 2011-02-03
      • 2017-11-02
      • 2016-04-22
      • 2020-05-08
      • 2013-03-10
      • 1970-01-01
      • 2010-10-20
      相关资源
      最近更新 更多