Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да импортирате данни от mysql база данни в datagridview

  2. пълнотекстово търсене на mysql в релсите

  3. грешка при автоматично увеличаване на mysql

  4. Laravel 4:Как да приложим условие WHERE към всички заявки от клас Eloquent?

  5. Премахване на MySQL 5.7 напълно