双引号的URL编码

时间:2014-04-12 22:57:23

标签: javascript php html

我知道网址中不允许双引号字符,它被编码为%22,这是通过 utf-8编码完成的。但是,如果我构建一个不执行url编码的浏览器并且使用双引号本身进行查询会发生什么,因为它在utf-8编码方案中是允许的。例如:www.google.com/"a"。此外,当遇到双引号时,服务器中的url解析脚本会发生什么?

1 个答案:

答案 0 :(得分:1)

由于您将无效的URI传递给服务器,服务器可能会以HTTP 400 Bad Request状态响应,但可能不会。不同的服务器在此上有不同的行为。例如,Apache 2.4服务器以403 Forbidden响应。似乎他们认为它是SQL注入的尝试并立即抑制它。 nginx服务器以404 Not Found响应。

您不需要构建一个不进行URL编码检查的浏览器。您可以从简单的telnet程序执行此查询,该程序作为大多数操作系统的一部分(但默认情况下可能未安装)。如果已安装,您只需在终端窗口中执行telnet www.google.com 80,粘贴以下两行:

GET /"a" HTTP/1.1
Host: www.google.com

然后按两次Enter键。您将收到404 Not Found的回复。如果您对stackoverflow.com执行相同操作,则响应将为400 Bad Request