当我使用$_POST、$_GET、$_SERVER时,在Netbeans 7.4上收到此警告消息。
不直接访问超全局$_POST阵列
什么意思?我可以做些什么来纠正这个警告?
编辑:事件示例代码仍然显示此警告。
发布于 2013-11-09 18:15:50
用filter_input(INPUT_POST, 'var_name')
代替$_POST['var_name']
用filter_input_array(INPUT_POST)
代替$_POST
发布于 2014-06-24 01:09:42
虽然有点晚,但我在寻找相同问题的解决方案时遇到了这个问题,所以我希望它能对我有所帮助……
发现自己处在和你一样的黑暗中。我刚刚找到了这篇文章,它解释了NetBeans 7.4中引入的一些新提示,包括这篇文章:
https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new
添加它的原因是因为超全局变量通常充满了用户输入,这不应该被盲目信任。相反,应该进行某种过滤,这就是提示所建议的。过滤超全局值,以防它包含一些有毒内容。
例如,我有:
$_SERVER['SERVER_NAME']
我改成了:
filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING)
这里有filter_input和filters文档:
发布于 2015-05-06 19:04:18
我同意其他回答者的观点,在大多数情况下(几乎总是),有必要对您的输入进行消毒。
但请考虑这样的代码(它用于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();
}
在这里应用清理并不是很有用(尽管它也不会破坏任何东西)。
因此,遵循建议,但不要盲目-而是理解为什么要这样做:)
https://stackoverflow.com/questions/19767894
复制相似问题