正在将随机十六进制字符插入到web源代码中

Random hex characters being inserted into web source code

本文关键字:web 源代码 插入 字符 随机 十六进制      更新时间:2023-09-26

仅在某些计算机上,但在所有经过测试的浏览器(Chrome、Safari、IE和Firefox)上,一些随机十六进制代码被插入到我们网页的源代码中。它们似乎每8000个字符就有一个,通常在它的前后都会有一行

<td align="center" 
class="rownumber weight_row" style="font-size:23px;font-weight:bold;font-family:Garamond, Arial, Helvetica, sans-serif" 
id="gamepoints_
1f57
3442">1</td>
<td  align="center">

正确的代码如下所示:

<td align="center" 
class="rownumber weight_row" style="font-size:23px;font-weight:bold;font-family:Garamond, Arial, Helvetica, sans-serif"     
id="gamepoints_3442">1</td>
<td  align="center">

额外的1f57不在我们的源代码中,它似乎在整个页面中随机出现,在不同的位置中断了代码。它似乎每8000个字符出现一次,通常是1fxx,但可以是20xx或1dxx,其中xx是十六进制数。很难弄清楚的是,为什么它只发生在极少数用户身上(我们有20000个用户,我知道有4个用户发生了这种情况),而我无法在我拥有的任何计算机上实现。此外,对于一个人来说,他去了一个新的地方,问题就解决了(用他的笔记本电脑解决),所以我不确定这是否与IP地址有关。如有任何帮助,我们将不胜感激。这些额外的字符导致javascript代码在页面上失败。

更新:该网络堆栈为CentOS 6.5版、Apache/2.0.64、MySQL 5.1.73、PHP 5.2.9。我已经确认我们的服务器正在使用HTTP1.1响应。

更新#2:每个有问题的人都在运行一个代理。它似乎与传输编码有关:chunked。在stackoverflow上发现了这个建议添加一个标题:

php在内容之前插入十六进制字符数

然而,当我在php代码内部的文件顶部添加标题("Transfer Encoding:cchunked")时,页面不会加载。

因此,不知何故,通过这些代理将头解释为没有进行块编码。有没有一种方法可以让我在我的一端添加一些东西,让它正确地解释它?

这几乎可以肯定是由用户端的代理引起的。

在没有更多信息的情况下,我的最佳猜测是您正在发送HTTP1.1响应,但用户的代理将其解释为HTTP1.0(因为它真的很旧或配置错误)。

您可以通过让他们绕过代理进行测试,或者用调试工具检查他们实际收到的内容,或者强制所有响应HTTP1.0,看看会发生什么。


(如果我必须把钱放在上面,我会说是一个透明的鱿鱼代理,我很想知道我是不是对的!)