sql >> Database teknologi >  >> RDS >> Mysql

mysql_real_escape_string ikke god nok?

Begrundelse fra metodenavnet queryAsArray , det ser ud til, at du bruger denne DbBase klasse fra kommentarerne på MySQL-funktionsmanualsiden . Hvis det er tilfældet, er det query metode, der fjerner escape-tegnet fra de escapede anførselstegn:

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

Så er det ikke et mirakel, at dit eksempel virker (jeg forenklede det):

$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-lignende præstationsboost

  2. Hvordan forespørger jeg efter felter, der indeholder en given tekst i MySQL?

  3. MySQL C# tekstkodningsproblemer

  4. Sådan genererer du tilføje kolonneerklæring for alle tabellerne i en database i SQL Server - SQL Server / T-SQL selvstudium del 49