我的印象是,什么都被插入到< input type =“text”name =“something”>将使用$ _POST ['something']收到PHP中的字符串。
但现在我正在运行一个工具来测试我的网站,不知何故$ _POST ['something']可以是一个数组。
这怎么可能?
答案 0 :(得分:2)
如果您的表单中有<input name="something[]" ... />
之类的输入,则可以包含其中的许多内容或<select name="something[]" multiple ... />
等。
$ _ POST [&#39;某事&#39;]将是一个数组。
答案 1 :(得分:0)
这是常见的&#39; hack&#39;。您应该始终验证您获得的变量是否符合您的预期格式。 $ _GET示例:
http://127.0.0.1/hack_test.php?a[]=3&a[]=5?a[]=3&a[]=5
$ _GET和&#39;键的示例&#39;数组:
http://127.0.0.1/hack_test.php?a[3]=3&a[hack_name]=5
如果你把:
<?php
var_dump($_GET);
在 hack_test.php 中,它会显示:
array(1) {
["a"]=>
array(2) {
[0]=>
string(1) "3"
[1]=>
string(1) "5"
}
}
变量$ _GET [&#39; a&#39;]是包含2个元素的数组!
在PHP中就是这样,因为网站表单有时需要该功能。 示例:强>
<form ..>
<input type="checkbox" name="multicheckbox[]" value="chicken" />
<input type="checkbox" name="multicheckbox[]" value="apple" />
<input type="checkbox" name="multicheckbox[]" value="sugar" />
</form>
我打电话给他&#39; hack&#39;,因为:
如果您使用其他PHP功能&#39;字符串是字节数组&#39;然后有人可以将修改后的数据发送给脚本,例如。 $ x =&#34; abc&#34 ;; $ a = $ x [0]; echo $ a; - &GT; &#39;一个&#39; 强>
如果您在未经验证的情况下将输入[表单]中的数据放入SQL查询中,黑客可以使用它来生成无效的查询格式&#39;在某些情况下,它让他从数据库中获取一些信息!