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 कास्ट और एएससी / डीईएससी

  2. XID के लिए फिर से शुरू 0:अज्ञात

  3. PhpMyAdmin कैसे स्थापित करें

  4. MySQL में कॉलम का डिफ़ॉल्ट मान कैसे निकालें

  5. घटाते समय php के साथ mysql को कैसे अपडेट करें