来自论坛输入元素的数组值

时间:2015-01-30 21:32:24

标签: php arrays forms

我的印象是,什么都被插入到< input type =“text”name =“something”>将使用$ _POST ['something']收到PHP中的字符串。

但现在我正在运行一个工具来测试我的网站,不知何故$ _POST ['something']可以是一个数组。

这怎么可能?

2 个答案:

答案 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;,因为:

  1. 如果您使用其他PHP功能&#39;字符串是字节数组&#39;然后有人可以将修改后的数据发送给脚本,例如。 $ x =&#34; abc&#34 ;; $ a = $ x [0]; echo $ a; - &GT; &#39;一个&#39;

  2. 如果您在未经验证的情况下将输入[表单]中的数据放入SQL查询中,黑客可以使用它来生成无效的查询格式&#39;在某些情况下,它让他从数据库中获取一些信息!