sql >> データベース >  >> RDS >> Mysql

mysql_real_escape_stringは十分ではありませんか?

    メソッド名からの推論queryAsArrayこのDbBaseを使用しているようです MySQL関数のマニュアルページのコメントからのクラス 。もしそうなら、それはquery エスケープされた引用符からエスケープ文字を削除するメソッド:

    function query($sql, &$records = null){
        $sql = str_replace(array('\\"', "\\'"), array('"', "'"), $sql);
        // …
    }
    

    次に、あなたの例が機能するのは奇跡ではありません(私はそれを単純化しました):

    $input = "', BAD SQL INJECTION --";
    
    $sql = "SELECT '".mysql_real_escape_string($input)."'";
    var_dump($sql);  // string(33) "SELECT '\', BAD SQL INJECTION --'"
    //                      everything’s OK ↑
    
    $sql = str_replace(array('\\"', "\\'"), array('"', "'"), $sql);
    var_dump($sql);  // string(32) "SELECT '', BAD SQL INJECTION --'"
    //                                Oops! ↑
    


    1. mysqlデータディレクトリの場所

    2. Spring Hibernate Templateのexecuteメソッドは、Oracleでのカウントクエリに対してどのオブジェクトタイプを返しますか?

    3. MySQLでのbase64エンコード

    4. アクセスフォームカスケードコンボボックスは、ドロップダウンメニューに何も表示されません