如何使用问号或反斜杠触发400错误请求

问题描述:

requestPathInvalidCharacters指定无效字符列表,这将触发400 Bad Request响应。默认情况下,该列表包含:"<,>,*,%,&,:,\\,?"。这包括问号和反斜杠。但据我所见,这两个角色永远不会被视为无效。如何使用问号或反斜杠触发400错误请求

第一个问号后面的每个URL字符都将用在查询字符串中。所以像/path?foo?bar这样的URL被认为是有效的。在这个例子中,查询字符串由单个无钥匙值foo?bar组成。即使/?????是有效的网址。

反斜杠自动转换为正斜杠,所以我不明白这些可能被认为是无效的。

只是%会触发错误。例如。 GET /% HTTP/1.1,因为这是一个不完整的请求。

例如: https://*.com/%

一些其他字符也引发400个回应,但您的浏览器会自动转换它们。概念验证:

% curl -i 'http://*.com/<' 
HTTP/1.1 400 Bad Request 
+0

我知道'%'和'

+0

这是一个猜测,但我假设他们符合条件:'?'是请求查询的一部分,而不是路径。我对'\\\'的唯一猜测是RFC2396将它定义为需要由于作为分隔符而进行转义,并且它不是有效的。 – Vetsin