【问题标题】:Is there a reason that a browser would change its User Agent?浏览器是否有理由更改其用户代理?
【发布时间】:2014-10-09 13:29:16
【问题描述】:

我目前正在为一个在网站上存储个人信息和信用卡信息的客户开发一个新网站。因此,安全性对我来说是一个大问题。这是我建立的第一个包含敏感信息的网站,所以我对整个主题不是很熟悉。

网站使用会话管理用户。但是,我发现很难保证会话安全。我想实现一个用户代理检查,每次加载页面时检查浏览器。这样,当我将会话 ID 复制到“攻击者”浏览器上手动创建的 cookie 中时,服务器将检测到用户代理更改(从 Chrome 到 Firefox)并拒绝会话。

我的问题是,如果我确实在每次加载页面时都执行此检查,我是否会冒退出合法用户的风险?真正的用户是否有任何理由会在页面之间更改他们的用户代理?如果是这样,这种情况发生的可能性有多大?很可能我应该完全放弃这种方法,还是可以接受的风险?

编辑:cookie 设置为在浏览器关闭后立即过期。此外,登录时设置的用户代理存储在会话中,并在附加盐后进行哈希处理。

【问题讨论】:

  • 使用 SSL。如果您不使用 SSL,则没有真正的安全性。如果人们可以劫持您的会话 ID,则用户代理不是远程可接受的检测方法。总比没有好。
  • “真正的用户有什么理由会在页面之间改变他们的用户代理吗?”不是真的,不。但这不是您应该关注的真正用户。这是试图闯入的人。任何人都可以更改浏览器的用户代理,所以 IMO,这是一种浪费的检查。
  • 如果您不是网络安全专家并且您正在处理信用卡详细信息,则不应处理信用卡详细信息。您为什么不将此推送给 World Pay 或 Paypal 等第三方?
  • “此外,登录时设置的用户代理存储在会话中,并在添加盐后进行哈希处理。”表示您不知道散列或加盐的用途。您真的必须不接受信用卡详细信息。安全性是最困难的问题之一,您绝对没有机会在第一次尝试时就做好。如果您存储信用卡,失败的成本非常高,无法冒险。

标签: php security session user-agent


【解决方案1】:

是的,用户代理字符串可以更改。会话 cookie 通常比单个浏览器会话持续时间更长。如果用户升级他们的浏览器(这些天在 Chrome 和 Firefox 的自动更新程序中很常见),那么用户代理字符串中将出现一个不同的版本。

另外,一些插件会在用户代理字符串中报告,如果用户安装一个,会导致它发生变化。

您的用户代理字符串检查并没有真正提供任何额外的安全性。不推荐。

【讨论】:

  • 另外,如果有人可以窃取浏览器会话 cookie - 那么他们可能也已经拥有 UA。
  • 刚刚发现(并不特别令人惊讶)开发人员工具切换到/退出移动模式可以更改请求之间的用户代理字符串。因此,这种技术也会阻碍响应式界面的开发。
猜你喜欢
  • 2011-04-02
  • 1970-01-01
  • 2012-09-25
  • 2011-06-08
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
相关资源
最近更新 更多