7
4

3 に答える 3

2

あなたが言及したこととは別に、 mysql_real_escape_string()関数は、SQL インジェクションに対するサニタイズのためにうまくいくはずです。

適切なエスケープ関数を使用して、ユーザー入力を適切にエスケープする必要があります。チェーンされた処理ブロックがこのユーザー入力を処理していると想像すると、どの順序で (最後から最初に)、何をエスケープ/エスケープ解除するか、いつエスケープするかがわかります。 、そしてクリーンな入力を確保する限り大丈夫です(検証は別の問題です)。

そして、すでにご存知のように、 PDO のquote()またはMysqliの prepare()の方が優れたアプローチです。

于 2012-08-20T15:08:29.627 に答える
1

これを試してくださいmysql_real_escape_string()を使用してください

$word = '2*3%5_1^0';

$query = 'SELECT * FROM TABLE_NAME WHERE field REGEXP "(.*)[[:<:]]'.mysql_real_escape_string($word).'[[:>:]](.*)" ';
于 2012-08-17T11:30:14.027 に答える
1
function clean($str) {
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
        $str = stripslashes($str);
    }
    return mysql_real_escape_string($str);
}

それから:

$word = clean($_POST['whatever post']);

次に、単語をトリムして、準備完了です。このphp関数が行うことは、すべてのリテラルを取得して文字列に変換することです。そのため、誰もあなたのデータベースを削除することはできません。

于 2012-08-20T15:03:56.357 に答える