对于我的框架,我想出于安全原因清空/禁用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;
答案 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;