双引号的URL编码

web*_*ing 8 html javascript php

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

小智 3

由于您将无效的 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
Run Code Online (Sandbox Code Playgroud)

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