1

認証を行うために Codeigniter 関数にデータを送信する標準のログイン フォームがあります。問題は、データが関数に到達する前に HTML エンティティが取り除かれているように見えることです。 、しかし、config.php のパラメーターは Codeigniter 関数に関連しているだけだと思っていました。IE $this->input->post NOT $_POST に関連しています。得た

$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 NOT 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 に答える