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