如何清空REQUEST数组?

时间:2009-12-11 06:07:57

标签: php security

对于我的框架,我想出于安全原因清空/禁用REQUEST数组,用户应该只使用正确的数组,如POST,GET或COOKIE。但我不知道该怎么做。即使像下面这样的东西似乎也不起作用,它甚至可以清空GET POST等等。

$temp_get = $_GET;
$temp_post = $_POST;
$temp_cookie = $_COOKIE;
// empty request array
$_REQUEST = array();
$_GET = $temp_get;
$_POST = $temp_post;
$_COOKIE = $temp_cookie;

4 个答案:

答案 0 :(得分:2)

尝试

unset($_REQUEST);

答案 1 :(得分:1)

这里正确的做法是使用$ _REQUEST用正确的方法替换所有这些函数/变量。坚持惯例,GET拉,POST插入数据,不要忘记$ _COOKIE。

如果您不从$ _REQUEST获取输入,您将省去很多麻烦。为了永远保持安全,请记住要逃避任何可能被篡改的输入(_GET, POST ,_ COOKIE,并且不要忘记一些令人讨厌的_SERVER变量)。

答案 2 :(得分:1)

这样的解决方案会起作用吗?

<?php

class Request
{
    public static $get, $post, $cookie;

    public function __construct()
    {
        self::$get = $_GET;
        self::$post = $_POST;
        self::$cookie = $_COOKIE;
    }
}

new Request();
$_REQUEST = array();
print_r(Request::$get);

你可以通过test.php来测试它?a = b&amp; c = d

答案 3 :(得分:0)

您可以循环浏览$_GET$_POST$_COOKIE,保存他们的数据,然后清除$_REQUEST吗?

$tget = array();
foreach($_GET as $k=>$v)
{
    $tget[$k] = $v;
}

$tpost = array();
foreach($_POST as $k=>$v)
{
    $tpost[$k] = $v;
}

$tcookie = array();
foreach($_COOKIE as $k=>$v)
{
    $tcookie[$k] = $v;
}

unset($_REQUEST);

$_GET = $tget;
$_POST = $tpost;
$_COOKIE = $tcookie;