首页 > 解决方案 > 来自三星手机的多个无效 GET 请求

问题描述

在调试我的网站时,我经常遇到多个无效的 GET 请求,它总是三星移动设备。我不知道如何追踪这个问题......请参阅下面的日志和评论。设备似乎陷入了某个循环,并且每次都得到一个 302 重定向答案。注意:GET /history.php/index.php 是由用户的设备“编造”的,它不是可点击的链接,也不是我的 PHP 代码中的错误。此外,如果我在浏览器中请求 /history.php/index.php,正如预期的那样,我只是登陆 history.php,因为 URI 的其余部分被忽略,没有其他任何事情发生。

如前所述,在 100% 的情况下,它是三星 Android 设备,这可以确认问题不在我网站的代码中,因为它会影响所有设备。

更新:进一步的研究表明它只发生在“SamsungBrowser10.1”用户代理上。日志还表明他们是实际的人类用户,而不是攻击者。总是相同的模式:用户被重定向离开“history.php”,因为他们没有使用简单的 PHP 登录: header("Location: index.php"); 由于某种原因,此时 UA 字符串更改为“Dalvik/2.1.0 ...”(见下文),并且浏览器似乎采用旧 URL,附加正斜杠,然后附加新位置,因此发生这种情况(在简化形式):

GET www.example.com/history.php    (UA: Mozilla 5.0 ...)
=> PHP header("Location: index.php"); exit;
GET www.example.com/index.php    (UA: Mozilla 5.0 ...) What we want !
GET www.example.com/history.php/index.php    (UA: "Dalvik/2.1.0 ...) WTF 
GET www.example.com/history.php/index.php    (UA: "Dalvik/2.1.0 ...)
GET www.example.com/history.php/index.php    (UA: "Dalvik/2.1.0 ...)
...

[结束更新]

示例日志:

User requests history.php...OK

04:19:53 +0000] "GET /pilotzone/history.php HTTP/1.1" 200 6280 "[edited]" "Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G975F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/10.1 Chrome/71.0.3578.99 Mobile Safari/537.36"

用户请求 index.php...OK

04:19:55 +0000] "GET /pilotzone/index.php HTTP/1.1" 200 6253 "[edited]" "Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G975F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/10.1 Chrome/71.0.3578.99 Mobile Safari/537.36"

在同一秒钟内,用户返回 history.php !?!

04:19:55 +0000] "GET /pilotzone/history.php HTTP/1.1" 200 9542 "-" "Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G975F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/10.1 Chrome/71.0.3578.99 Mobile Safari/537.36"

幻想请求,不是由我的 PHP 代码生成的,都得到 302 重定向……注意用户代理突然改变了!

04:19:55 +0000] "GET /pilotzone/history.php/favicon.ico HTTP/1.1" 302 590 "-" "Dalvik/2.1.0 (Linux; U; Android 9; SM-G975F Build/PPR1.180610.011)"

04:19:55 +0000] "GET /pilotzone/history.php/index.php HTTP/1.1" 302 590 "-" "Dalvik/2.1.0 (Linux; U; Android 9; SM-G975F Build/PPR1.180610.011)"

04:19:55 +0000] "GET /pilotzone/history.php/index.php HTTP/1.1" 302 590 "-" "Dalvik/2.1.0 (Linux; U; Android 9; SM-G975F Build/PPR1.180610.011)"

04:19:55 +0000] "GET /pilotzone/history.php/index.php HTTP/1.1" 302 590 "-" "Dalvik/2.1.0 (Linux; U; Android 9; SM-G975F Build/PPR1.180610.011)"

04:19:55 +0000] "GET /pilotzone/history.php/index.php HTTP/1.1" 302 590 "-" "Dalvik/2.1.0 (Linux; U; Android 9; SM-G975F Build/PPR1.180610.011)"

04:19:55 +0000] "GET /pilotzone/history.php/index.php HTTP/1.1" 302 590 "-" "Dalvik/2.1.0 (Linux; U; Android 9; SM-G975F Build/PPR1.180610.011)"

[...]

我猜这个 GET 请求在 Apache 关闭连接之前发出了 20 次。(出于隐私原因删除IP地址)

标签: androidapachesamsung-mobilesamsung-browser

解决方案


推荐阅读