我听说它是在
等查询参数中传递数组的黑客攻击 http:site.com?a[]=5&a[]=6
我知道查询参数中的PHP支持数组,所以在服务器端你可以得到像
这样的东西$_GET[a] = [5,6]
其他编程语言是否像PHP一样支持此功能?是不是以这种方式传递数组?如果是,那么在GET参数中传递数组的最佳做法是什么?
IMO:它的功能不是黑客仍然希望得到社区的意见
答案 0 :(得分:1)
That's not a hack, it's an awesome feature!
I think people are saying this because it's ugly if your users see it in the URL.
What you can do is concat your data, then explode it server side.
http:site.com?a=5_6
explode('_', $a);
答案 1 :(得分:0)
在get?
中查询参数中发送数组是不是很糟糕?
这是application / x-www-form-urlencoded的非标准添加(首先没有明确定义),所以是的,它是一个黑客。
无论是聪明的黑客还是丑陋的黑客攻击,都在很大程度上是一种观点问题。有利有弊。
其他编程语言是否像PHP一样支持这个?
大多数语言都没有在这样的基础级别上进行HTTP处理。 PHP开始作为一个库来做CGI风格的事情并且它显示出来。您真的应该在这里查看用于处理表单数据而不是语言的库。
大多数都允许您在查询字符串中扩展重复键,而不要求名称包含[]
(这是冗长且难以阅读的)以使其起作用。这种情况的限制是您无法在数据中明确指定数组索引。
虽然有PHP风格的实现。 body-parser允许您在指定extended: true
时使用该语法。 Perl的PHP::ParseStr
实现了它,但没有将它与代码集成以从请求中提取字符串。
如果是,那么在GET参数中传递数组的最佳做法是什么?
如果您使用的是PHP,那么请使用PHP的语法。