1

この小さなセクションよりもはるかに高度な検証スクリプトを作成しています。問題が発生している特定の部分を印刷しているだけです。

このスクリプトは、設定のリストを含む 1 次元配列を取り込んで、必要なテストを実行し、必要な文字列を含む多次元配列を吐き出すだけで、問題はまったくありません。

何らかの理由でtrim() strip_tags() strip_html_tags()機能は動作していますが、同時に失敗しています。これは、文字列が関数を介して渡され、クリーンとして表示されることを意味しますが、組み込みの PHP 関数は期待どおりに機能しません。

問題は、組み込み関数がユーザーに直接出力されるテキストに対してのみ機能するのか、それとも関数が出力前、つまりデータベースに保存されている間ではなく出力されているときに機能するのかということです。

ユーザー入力としてすべてのスクリプトタグを削除して、プレーンテキストのみを取得しようとしています。

以下の機能を持つ各ステートメントでスイッチを使用したかったのは、switchステートメントのスニペットです。

私が使用しようとしているものは、期待どおりに機能しません。

function check_input1($input)
{
    if(trim($input))
    {
        $cleaninput[$i][$input] = 'CLEAN';
    }else
        $cleaninput[$i][$input] = 'DIRTY';
}


function check_input2($input)
{
    if(strip_tags($input))
    {
       $cleaninput[$i][$input] = 'CLEAN';
    }else
       $cleaninput[$i][$input] = 'DIRTY';
}



function check_input3($input)
{
    if(strip_html_tags($input))
    {
       $cleaninput[$i][$input] = 'CLEAN';
    }else
       $cleaninput[$i][$input] = 'DIRTY';
}

私が知っていることは、html要素で直接出力されます。

strip_tags(trim($key))
strip_tags(trim($value))
4

2 に答える 2

0

他の参照については、OWASP code.google.com/p/inspekt/wiki/DocsAndSupport によって資金提供された入力検証用の inspekt php4 および 5 フレームワークを検討することをお勧めします。入力と出力の間のファイアウォール タイプのシナリオを提供しています...素敵な小さなチュートリアルはこちらcodediesel.com/php/data-filtering-and-validation-using-inspect

于 2012-09-21T18:05:59.843 に答える
0

問題は、組み込み関数がユーザーに直接出力されるテキストに対してのみ機能するのか、それとも関数が出力前、つまりデータベースに保存されている間ではなく出力されているときに機能するのかということです。

問題の関数は、任意の文字列で機能します。データベース宛の文字列と stdout 宛の文字列に違いはありません。

あなたの問題は、関数が真/偽を返すことを期待しているように見えることです。それは彼らがどのように機能するかではありません。変更された文字列を返します。すべての単一のif条件がCLEANセクションに入り (その関数が を返さないと仮定"")、関数によって返されたクリーンな文字列を静かに破棄します。

あなたが望むのは次のようなものです:

function check_input3($input)
{
    $output = strip_html_tags($input);

    if ($output == $input) {
        // strip_html_tags didn't remove anything
        $cleaninput[$i][$input] = 'CLEAN';
    } else {
        // variables differ, so strip_html_tags found something to remove
        $cleaninput[$i][$input] = 'DIRTY';
    }
}
于 2012-09-21T04:06:57.183 に答える