首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >警告“请勿直接访问Netbeans 7.4上的超级全局$_POST数组”

警告“请勿直接访问Netbeans 7.4上的超级全局$_POST数组”
EN

Stack Overflow用户
提问于 2013-11-04 20:39:20
回答 5查看 110.6K关注 0票数 119

当我使用$_POST$_GET$_SERVER时,在Netbeans 7.4上收到此警告消息。

不直接访问超全局$_POST阵列

什么意思?我可以做些什么来纠正这个警告?

编辑:事件示例代码仍然显示此警告。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-11-09 18:15:50

filter_input(INPUT_POST, 'var_name')代替$_POST['var_name']

filter_input_array(INPUT_POST)代替$_POST

票数 98
EN

Stack Overflow用户

发布于 2014-06-24 01:09:42

虽然有点晚,但我在寻找相同问题的解决方案时遇到了这个问题,所以我希望它能对我有所帮助……

发现自己处在和你一样的黑暗中。我刚刚找到了这篇文章,它解释了NetBeans 7.4中引入的一些新提示,包括这篇文章:

https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new

添加它的原因是因为超全局变量通常充满了用户输入,这不应该被盲目信任。相反,应该进行某种过滤,这就是提示所建议的。过滤超全局值,以防它包含一些有毒内容。

例如,我有:

代码语言:javascript
复制
$_SERVER['SERVER_NAME']

我改成了:

代码语言:javascript
复制
filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING)

这里有filter_input和filters文档:

http://www.php.net/manual/en/function.filter-input.php

http://www.php.net/manual/en/filter.filters.php

票数 93
EN

Stack Overflow用户

发布于 2015-05-06 19:04:18

我同意其他回答者的观点,在大多数情况下(几乎总是),有必要对您的输入进行消毒。

但请考虑这样的代码(它用于REST控制器):

代码语言:javascript
复制
$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();
}

在这里应用清理并不是很有用(尽管它也不会破坏任何东西)。

因此,遵循建议,但不要盲目-而是理解为什么要这样做:)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19767894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档