如何使用问号或反斜杠触发400错误请求
问题描述:
requestPathInvalidCharacters
指定无效字符列表,这将触发400 Bad Request
响应。默认情况下,该列表包含:"<,>,*,%,&,:,\\,?"
。这包括问号和反斜杠。但据我所见,这两个角色永远不会被视为无效。如何使用问号或反斜杠触发400错误请求
第一个问号后面的每个URL字符都将用在查询字符串中。所以像/path?foo?bar
这样的URL被认为是有效的。在这个例子中,查询字符串由单个无钥匙值foo?bar
组成。即使/?????
是有效的网址。
反斜杠自动转换为正斜杠,所以我不明白这些可能被认为是无效的。
答
只是%
会触发错误。例如。 GET /% HTTP/1.1
,因为这是一个不完整的请求。
例如: https://stackoverflow.com/%
一些其他字符也引发400个回应,但您的浏览器会自动转换它们。概念验证:
% curl -i 'http://stackoverflow.com/<'
HTTP/1.1 400 Bad Request
我知道'%'和'
这是一个猜测,但我假设他们符合条件:'?'是请求查询的一部分,而不是路径。我对'\\\'的唯一猜测是RFC2396将它定义为需要由于作为分隔符而进行转义,并且它不是有效的。 – Vetsin