【问题标题】:Detecting Browser user agent forgery检测浏览器用户代理伪造
【发布时间】:2020-07-25 01:58:57
【问题描述】:

虽然人们应该使用从其合法网站下载的经过批准的浏览器来使用它们很重要,但服务器是否有任何方法可以检测是否有人在欺骗浏览器(用户代理)?

我的问题特别提到了安全性。如果有人创建浏览器(用户代理)并且不遵守某些合同(例如,cookie 的同源策略)来利用那里的漏洞怎么办?这个非法浏览器可以通过使用 Firefox 或 Chrome 中使用的标准值填充 User-Agent 标头来声称它是真正的用户代理。

服务器端有什么方法可以检测用户是否使用了欺骗性的用户代理,以便服务器可以在需要时采取对策?或者这是个人使用浏览器的绝对责任,只能使用经过批准的浏览器(服务器无法检测到)?

【问题讨论】:

    标签: http security https http-headers


    【解决方案1】:

    浏览器只是 HTTP 的高级用户界面。在引入各种安全方法之前,没有多少地方可以防止此类攻击。现在的浏览器(Chrome、Firefox、Edge)有限制并遵守某些规则/合同(为了正常工作)。

    一个 HTTP 客户端可以欺骗(发送)任何东西(一个非常精简的 “浏览器”),例如 CURL。

    curl -A "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" http://blah.nonexistent.tld
    

    (默认的 curl 标头类似于 User-Agent: curl/7.16.3)

    服务器可以限制或检测不常见的用户代理以防止抓取或扫描,但用户代理只是一个“名称”,可以像上面所做的那样更改为常见的。

    已添加的安全方法(合同)如Same Origin Resource Policy / Cross Origin Resource Sharing / HTTP Only 用于保护客户端(浏览器)和服务器。它们必须由两者来实现,以便正常(安全地)运行以防止上述攻击。如果客户端和服务器没有正确使用商定的合同,那么 cookie 可能会被泄露(现代浏览器的设计目的是快速失败并且仍然可以防止这种情况发生)。

    如果您的意思是您要创建自己的浏览器,并将其用户代理设置为 Chrome,请忽略正确配置的服务器的合同,那么他们可能会忽略您。您会从“自定义”浏览器中窃取哪些用户 cookie,而很少有人使用?

    【讨论】:

    • 知道了,我就是这么想的;但不确定我的想法是否正确。只是想知道服务器服务器是否可以以某种方式检测我是否在欺骗。似乎答案是否定的。非常感谢!
    • @SRaj - 服务器仍然可以检测到欺骗。如果您问这个问题,服务器是否可以使用“仅”用户代理来检测欺骗,那么答案是否定的。但是服务器可以在用户代理之外实现一些额外的东西并且可以检测欺骗。我建议阅读有关 Google Picasso Project 的信息。 static.googleusercontent.com/media/research.google.com/en//pubs/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    相关资源
    最近更新 更多