1

我有一个标准的登录表单,将数据提交给 Codeigniter 函数以进行身份​​验证。问题是,数据似乎在到达函数之前就被剥夺了 HTML 实体。现在,如果我错了,请纠正我,但我认为 config.php 中的参数只与 Codeigniter 函数相关,即与 $this->input->post 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 实体,即密码字段中的 IE %10 - $_POST['password'] 应该是 password%100 而不是 password0

谁能告诉我如何获得正确的、未转义的数据?

在此先感谢,克里斯蒂安

4

2 回答 2

6

我也面临几乎同样的问题,因为我使用 $_REQUEST 方法,它对我有用。请尝试此方法,希望对您有所帮助。

于 2012-06-15T11:09:39.217 回答
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);
    }

希望对其他人有所帮助!

于 2012-06-15T11:19:37.607 回答