Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 依赖URL查询参数的顺序是合法的还是安全的?_Http_Url_Url Parameters - Fatal编程技术网

Http 依赖URL查询参数的顺序是合法的还是安全的?

Http 依赖URL查询参数的顺序是合法的还是安全的?,http,url,url-parameters,Http,Url,Url Parameters,依赖URL查询参数的顺序是合法的还是安全的?具体来说,我是否能够编写代码,并相信该代码将始终工作,基于这两个查询字符串,这些代码具有不同的行为: ?a=10&add=5&multiply=3 # might mean (10 + 5) * 3 ?a=10&multiply=3&add=5 # might mean (10 * 3) + 5 (我的例子当然是人为设计的,我知道这样构建一个计算器是荒谬的。:)这些查询字符串都是完全合法的,而且是不同的。根

依赖URL查询参数的顺序是合法的还是安全的?具体来说,我是否能够编写代码,并相信该代码将始终工作,基于这两个查询字符串,这些代码具有不同的行为:

?a=10&add=5&multiply=3    # might mean (10 + 5) * 3
?a=10&multiply=3&add=5    # might mean (10 * 3) + 5

(我的例子当然是人为设计的,我知道这样构建一个计算器是荒谬的。:)

这些查询字符串都是完全合法的,而且是不同的。根据,查询字符串只不过是

…非分层数据,该数据。。。用于标识URI的方案和命名权限范围内的资源

详细说明了HTML表单必须如何以
application/x-www-form-urlencoded
格式生成
key=value
对的规则。特别有趣的是如何解析
应用程序/x-www-form-urlencoded
内容的规则:

要解码
应用程序/x-www-form-urlencoded
有效载荷,应使用以下算法

该算法的输出是一个名值对的排序列表

因此,
application/x-www-form-urlencoded
查询字符串内容可以正确地视为键/值对的排序列表


但是请记住,并非所有的Web框架都能捕获这些信息。它们可能会为您提供一个无序的字典,其中包含从查询字符串解析的属性名称和值。例如,Node.js中的方法返回一个解析后的查询字符串作为对象(其属性是键/值对),JavaScript对象总是无序的。

旁注:如果您不指定parhentesis,我建议依赖PEMDAS,至少您会有正确的数学