Kan*_*ika 116 php netbeans superglobals netbeans-7.4
我在Netbeans 7.4 for PHP上收到此消息警告,而我正在使用$ _POST,$ _GET,$ _SERVER,....
不要直接访问Superglobal $ _POST数组
这是什么意思?我该怎么做才能纠正这个警告?
编辑:事件示例代码仍显示此警告.
小智 91
filter_input(INPUT_POST, 'var_name')而$_POST['var_name']
filter_input_array(INPUT_POST)不是代替$_POST
小智 85
虽然有点晚,我在搜索同一问题的解决方案时遇到了这个问题,所以我希望它可以有任何帮助......
发现自己处于与你相同的黑暗中.刚刚发现这篇文章,它解释了NetBeans 7.4中引入的一些新提示,包括以下内容:
https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new
添加它的原因是因为超级全局通常充满了用户输入,这不应该被盲目信任.相反,应该进行某种过滤,这就是暗示所暗示的.过滤超全球值,以防它有一些中毒内容.
例如,我在哪里:
$_SERVER['SERVER_NAME']
Run Code Online (Sandbox Code Playgroud)
我改为:
filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING)
Run Code Online (Sandbox Code Playgroud)
您在此处拥有filter_input和filters doc:
http://www.php.net/manual/en/function.filter-input.php
http://www.php.net/manual/en/filter.filters.php
我同意其他的回答者,在大多数情况下(几乎总是),有必要对您的输入进行消毒.
但考虑这样的代码(它是用于REST控制器):
$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
case 'GET':
return $this->doGet($request, $object);
case 'POST':
return $this->doPost($request, $object);
case 'PUT':
return $this->doPut($request, $object);
case 'DELETE':
return $this->doDelete($request, $object);
default:
return $this->onBadRequest();
}
Run Code Online (Sandbox Code Playgroud)
在这里应用消毒并不是非常有用(尽管它也不会破坏任何东西).
所以,请遵循建议,但不要盲目 - 而要理解他们为什么这样做:)
| 归档时间: |
|
| 查看次数: |
97920 次 |
| 最近记录: |