同一个页面监测到请求了2次甚至多次的问题

这是一个罕见的 BUG,前台工程师犯错导致多余的请求开销。

故障现象:

服务器日志检测到同一个页面客户端连续传来两次 GET 请求,且间隔时间非常短,可以忽略那种。通过 microtime() 跟踪发现是几个微妙级别。

第一个请求是正常的。

第二个请求经过抓包分析,发现 http_accept 为 image 类型。

使用了多个浏览器, 发现 webkit 内核的都有这个问题,trident 内核的没有。在排除了黑客插件木马可能性进一步分析http报文,发现此请求是由于CSS里面的一句话 background:url() 为空,导致浏览器又请求了一次服务器根域名,并且是做为 http_accept 为image类型的报文请求。

等效于这样写 , 这样做导致浏览器会使用image容器去请求html页面

且只有webkit内核浏览器会解释并发出请求。

解决办法:删掉 background:url() 解决。

----------------------------

此问题非常罕见,但是可以作为一个攻击的手段。

具体做法就是伪造 http_accept 为 image 请求,在这种情况下某些防火墙默认策略是放行通过的,依此可能构建 DDOS 攻击,甚至基于CSS的攻击。

解决办法是在 PHP 的 header 里面检测 http_accept 排除image请求,有意思的是在构建排除代码的过程中发现部分不规范的搜索引擎利用这个漏洞,发送的 http_accept 为 *.* 或者 空 的报文。如果遇到这种请求 99% 都是 bot spider。

你可能感兴趣的:(PHP,前端CSS)