Могут ли серверы использовать заголовки http, чтобы поймать подпись браузера?
Я знаю, что порядок заголовков http не является значительным (или, по крайней мере, не должен) для веб-серверов для обработки запросов. Однако мне интересно, как серверы (особенно обратные прокси-серверы или CDN) могут проверить положение заголовков для легитимации запроса.
Позволь мне объяснить. Когда я делаю простой http-запрос с помощью firefox, это мои заголовки:
GET / HTTP/1.1
Host: stackru.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: stackru.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: stackru.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
Поскольку позиции заголовков не совпадают с "привычками" расположения заголовков Firefox, серверы могут знать, что происходит что-то подозрительное (пользователь может использовать расширение Chrome для подмены своего пользовательского агента).
Некоторые http-серверы действительно проверяют подобные вещи? По крайней мере, вероятно ли они (облачный фронт и еще много чего)? Или это то, о чем я не должен беспокоиться? И если я должен, где я мог бы найти исчерпывающий список порядка заголовков для основных браузеров?
1 ответ
В общем, порядок не имеет (и не должен) иметь значение.
Но на основании этого ответа есть исключения. Итак, чтобы ответить на вопрос: да, серверы (например, incapsula) могут использовать порядок заголовков http, чтобы перехватить сигнатуру браузера.