security - 服务器可以使用 http header 命令来捕获浏览器签名吗?

标签 security http http-headers

我知道 http header 顺序对于 Web 服务器处理请求并不重要(或者至少不应该重要)。但是,我想知道服务器(尤其是反向代理或 CDN)如何检查 header 位置以使请求合法。

让我解释一下。当我用 firefox 做一个简单的 http 请求时,这些是我的标题:

GET / HTTP/1.1
Host: stackoverflow.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:39.0) Gecko/20100101 Firefox/39.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
DNT: 1    
Cookie: yummy=yes_they_are
Connection: keep-alive
Cache-Control: max-age=0

使用 Chrome:

GET / HTTP/1.1
Host: stackoverflow.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Cookie: yummy=yes_they_are

不完全一样吧?然后,如果我将用户代理更改为 Firefox:

GET / HTTP/1.1
Host: stackoverflow.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:39.0) Gecko/20100101 Firefox/39.0
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Cookie: yummy=yes_they_are

因为 header 位置与 Firefox 的“ header 位置习惯”不匹配,服务器可以知道发生了什么可疑的事情(用户可能使用 Chrome 扩展来欺骗其用户代理)。

某些 http 服务器真的会检查这类事情吗?至少,他们有可能这样做吗(云端等等)?或者这是我完全不应该打扰的事情?如果我应该的话,我在哪里可以找到主要浏览器的详尽标题顺序列表?

最佳答案

一般来说,order does not (and should not) matter .

但基于this answer ,也有异常(exception)。因此,要回答这个问题:是的,服务器(如 incapsula)可以使用 http header 顺序来捕获浏览器签名。

关于security - 服务器可以使用 http header 命令来捕获浏览器签名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30787664/

相关文章:

angular - 从 Identity Server 4 注销不会从客户端注销

ios - 使用 OAuth 时保留登录信息

mysql - 通过 https 安全远程 MySQL 连接

java - 使用 VpnService 的 Android http 隧道

http - 在 libcurl 中更改 HTTP 请求中的单个 header 字段

php - 在 PHP 中回答 HTTP_IF_MODIFIED_SINCE 和 HTTP_IF_NONE_MATCH

json - Selenium 2 的安全性?

http - 主干 HTTP 基本 rest api 身份验证

http - 您如何为 Web 应用程序检索客户端用户的时区?

apache - 为什么HTTP升级: header contain both h2 and h2c in Apache?