POST数据被剥夺了HTML实体

时间:2012-06-15 10:54:55

标签: php html codeigniter

我有一个标准的登录表单,将数据提交给Codeigniter函数进行身份验证。问题是,数据似乎在它甚至点击函数之前被剥夺了HTML实体。现在,如果我正确的话,请纠正我我错了,但我认为config.php中的参数只与Codeigniter函数IE相关它与$ this->输入 - >发布NOT $ _POST有关..无论如何,在我的config.php中我已经

$config['global_xss_filtering'] = FALSE;

如果我提交表单,我在输入字段中提交的数据是:

$_POST['user'] = 'user';
$_POST['password'] = 'password%100';

作为参考,我的表格开头标记是:

<form method="POST" action="<?=site_url('/log-in')?>">

我已经完成了以下功能来测试数据:

echo "<pre>";
print_r($_POST);
echo sha1('userpassword%100') . '<br />';
echo sha1($_POST['username'] . $_POST['password']) . '<br />';
echo sha1($this->input->post('username', FALSE) . $this->input->post('password', FALSE)) . '<br />';
echo "</pre>";

其输出为:

Array
(
    [username] => user
    [password] => password0
)
ad45e6412dd3cec23e47bbb48c874cdcfd6d39e7
fa3279bde5d6aba9ed77c6e5b071ff8dde741b92
fa3279bde5d6aba9ed77c6e5b071ff8dde741b92

所以顶部哈希是正确的哈希,但是传递的实际数据似乎剥离了html实体,I.E。密码字段中的%10 - $ _POST ['password']应为密码%100 NOT password0

有人可以告诉我如何获取正确的,未转义的数据吗?

提前致谢, 基督教

2 个答案:

答案 0 :(得分:6)

我也遇到了几乎相同的问题,因为我使用$ _REQUEST方法,它对我有效。请尝试这一点,这将有助于你。

答案 1 :(得分:0)

在/system/core/Input.php的第568行,将remove_invisible_characters函数移动到$this->_enable_xss === TRUE语句中。

此前:

    // Remove control characters
    $str = remove_invisible_characters($str);

    // Should we filter the input data?
    if ($this->_enable_xss === TRUE)
    {
        $str = $this->security->xss_clean($str);
    }

现在:

    // Should we filter the input data?
    if ($this->_enable_xss === TRUE)
    {
        // Remove control characters
        $str = remove_invisible_characters($str);

        $str = $this->security->xss_clean($str);
    }

希望能帮助其他人!