URL中的奇怪字符

时间:2014-08-09 20:55:52

标签: url browser character-encoding

在我的网络服务器中,当用户请求带有奇怪字符的网址时,我会删除这些字符。系统会记录这些案例。当我检查消毒后的病例时,我发现了这些。我很好奇这些网址的目标是什么?

我检查IP,这些是真人,并将网站用作普通人。但是在这些人的20个URL请求中有一次,URL终于有了这些奇怪的角色。

http://example.com/@%EF%BF%BD%EF%BF%BD%02?o=3&g=&s=&z=%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%3E?, agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0,
http://example.com/%60E%EF%BF%BD%02?o=3&g=&s=&z=%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%3E?, agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0
http://example.com/%60E%EF%BF%BD%02?o=3&g=&s=&z=%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%3E?, agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0
http://example.com/p%EF%BF%BD%1D%01?o=3&g=&s=&z=%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%3E?, agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0
http://example.com/%EF%BF%BDC%EF%BF%BD%02?o=3&g=&s=&z=%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%3E?, agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0
http://example.com/%EF%BF%BDR%EF%BF%BD%02?o=3&g=&s=&z=%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD`%EF%BF%BD%EF%BF%BD%7F, agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
http://example.com/%EF%BF%BDe%EF%BF%BDv8%01%EF%BF%BD?o=3&g=P%01%EF%BF%BD&s=&z=%EF%BF%BD%EF%BF%BD%15%01%EF%BF%BD%EF%BF%BD, agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36

http://en.wikipedia.org/wiki/Specials_(Unicode_block)

5 个答案:

答案 0 :(得分:16)

它们本质上是格式错误的网址。它们可以从特定的恶意软件生成,该恶意软件试图利用网站漏洞,来自浏览器插件或扩展程序的故障,或者来自JS文件中的错误(即使用Google Analytics跟踪)以及特定的浏览器版本/操作系统。在任何情况下,你实际上都无法控制来自客户端的请求,并且你无法阻止它,所以,如果生成的HTML / JS代码是正确的,那么你已经完成了你的工作。

如果您因任何原因更正这些网址,您可以启用URL rewriting并使用正则表达式过滤器设置规则,以将这些网址转换为有效的网址。无论如何,我不建议这样做:Web服务器应该回复错误404页面未找到消息,因为这是标准(毕竟这是客户端错误),这是在我认为比应用URL重写更快更安全的方法。 (重写程序可能包含错误,因此有人可以尝试利用它等等)

为了好奇,您可以使用您选择的在线URL解码器轻松解码这些网址(例如this),但基本上您会发现您已经知道的内容:有很多{{3}在那些网址中。

实际上,%EF%BF%BD是UTF-8替换字符的3字节(EF BF BD)的十六进制表示的url编码版本。您可以将该字符视为EF BF BDFFFDï ¿ ½,依此类推,具体取决于您选择的制作方法。

此外,您可以自己检查客户端如何处理该角色。去这里:

UTF-8 replacement characters

按下GO按钮,使用浏览器开发人员工具检查实际发生的情况:浏览器实际上使用%EF%BF%BD对未知字符进行编码,然后再将其发送到Web服务器。

答案 1 :(得分:5)

这些看起来像是被称为“Adpeak”的恶意软件/广告软件插入的损坏的网址。

以下是Adpeak的一些细节:

How to remove AdPeak lqw.me script from my web pages?

Adpeak有一个客户端组件,可将以下标记粘贴到网页中:

<script type="text/javascript" id="2f2a695a6afce2c2d833c706cd677a8e" src="http://d.lqw.me/xuiow/?g=7FC3E74A-AFDA-0667-FB93-1C86261E6E1C&amp;s=4150&amp;z=1385998326"></script>

Adpeak有时也使用主机名“d.sitespeeds.com”,“d.jazzedcdn.com”,“d.deliversuper.com”,“d.blazeapi.com”,“d.quikcdn.com”,可能是其他人以下是一些例子:

<script type="text/javascript" id="2f2a695a6afce2c2d833c706cd677a8e" src="http://d.deliversuper.com/xuiow/?o=3&amp;g=823F0056-D574-7451-58CF-01151D4A9833&amp;s=7B0A8368-1A6F-48A5-B236-8BD61816B3F9&amp;z=1399243226"></script>
<script type="text/javascript" id="2f2a695a6afce2c2d833c706cd677a8e" src="http://d.jazzedcdn.com/xuiow/?o=3&amp;g=B43EA207-C6AC-E01B-7865-62634815F491&amp;s=B021CBBD-E38E-4F8C-8E93-6624B0597A23&amp;z=1407935653"></script>
<SCRIPT id=2f2a695a6afce2c2d833c706cd677a8e type=text/javascript src="http://d.lqw.me/xuiow/?o=3&amp;g=87B35A3E-C25D-041E-0A0F-C3E8E473A019&amp;s=BBA5481A-926B-4561-BD79-249F618495E6&amp;z=1393532281"></SCRIPT>
<SCRIPT id=2f2a695a6afce2c2d833c706cd677a8e type=text/javascript src="http://d.lqw.me/xuiow/?o=2&amp;g=0AD3E5F2-B632-382A-0473-4C994188DBBA&amp;s=9D0EB5E9-CCC9-4360-B7CA-3E645650CC53&amp;z=1387549919"></SCRIPT>

“id”是一致的:在我们见过的案例中,它始终是“2f2a695a6afce2c2d833c706cd677a8e”。

总是有一个“g”,“s”和“z”参数,有时候一个“o”参数的值为2或3。

我们已经注意到,对于我们的页面,此脚本的某个版本与在DOM中看到损坏的字符100%相关:如果省略“o”或设置为2,我们将看到附近注入的Unicode FFFD页面的末尾或有时是Ux000E字符,也就是SHIFT OUT,它打破了标准的JSON / XML序列化库,这就是我们一直在研究这些URL的原因。我们从未见过“o = 3”的腐败

然而,有时看起来Adpeak会感到困惑,并插入像这样的垃圾:

<script type="text/javascript" id="2f2a695a6afce2c2d833c706cd677a8e" src="��?o=3&amp;g=&amp;s=&amp;z=����������~?"></script>

现在,我们不知道这是Adpeak,因为URL被破坏,但“o = 3”,“g”,“s”和“z”参数是四支吸烟枪。这里缺少主机,因此它将针对我们的服务器进行解析,因此这些UxFFFD将以UTF-8十六进制编码的“%EF%BF%BD”序列发送,这与人们上面看到的相同。 / p>

如果您对这种情况有多普遍感到好奇,对于流量高且人口众多的特定客户,我们会看到Adpeak网址注入大约1.09%的网页,包括结构良好的Adpeak网址以及网址与UxFFFD的。如果您只是查找带有UxFFFD序列的Adpeak网址,那么这些网址会显示在所有网页的0.053%中。如果您只是查找导致DOM损坏的Adpeak网址(例如,包含“o = 2”或没有“o”参数的有效网址),则覆盖所有网页的0.20%。

答案 2 :(得分:2)

可能您的网站的字符集未初始化为UTF-8,但是当您在网站中请求页面时,它认为该字符使用utf-8进行编码。当它“理解”字符不是以UTF-8格式编码时,它用字节序列EF BF BD(“字符管理员”)替换它不知道的任何字符。 确保您在网站的每个位置都使用UTF-8,并在每个页面中使用<meta charset="UTF-8">

另一个例子:Whats going on with this byte array?

答案 3 :(得分:0)

你必须使用正则表达式函数,在php官方网站上搜索它或谷歌... 使用其他语言而非英语的网址会导致此问题, Meta charset utf 8不会影响网址,所以它不会帮助..meta charset只能帮助您在网页上显示其他语言文本,而不是您的网址.. 使用PHP Regex你甚至可以在网址中显示中文文本.. 希望它能起作用..

答案 4 :(得分:0)

只需取消选中visual studio中的EnableBrowserLink选项即可。每件事都可以开箱即用。