(PHP 4 >= 4.3.0, PHP 5)
mysql_real_escape_string -- Feloldja egy stringben a speciális karaktereket egy SQL lekérdezés számára
A string, amelyben fel kell oldani a karaktereket
A mysql kapcsolat erõforrása
Ez a függvény feloldja a speciális karaktereket az unescaped_string-ben, figyelembe véve az aktuális kapcsolat karakterkészletét. Tehát biztonságos, ha mysql_query()-n belül használod. Ha bináris adatot akarsz beszúrni, akkor ezt a függvényt kell használnod.
A mysql_real_escape_string() a MySQL könyvtár mysql_escape_string függvényét hívja meg, amely visszaperjeleket illeszt a következõ karakterek elé: NULL, \x00, \n, \r, \, ', " és \x1a.
Ezt a függvényt mindig használhatod (néhány kivétellel) arra, hogy az adatokat biztonságossá tedd beszúrás elõtt.
Megjegyzés: Ha a magic_quotes_gpc be van állítva, és a felhasználótól érkezõ adatokkal dolgozol, elõbb a stripslashes() függvényt kell meghívnod az adatokra. Ha már feloldott adatra hívod meg ezt a függvényt, a feloldott adat újból feloldásra kerül.
Ha az adatokat nem oldod fel ezzel a függvénnyel, az adatbázis-kérés nyitva áll az SQL beoltásos támadásnak.
Példa 2. Példa SQL beoltásos támadásra
A MySQL-nek küldött kérés
Ez megengedné bárkinek, hogy érvényes jelszó nélkül belépjen. |
Példa 3. Lekérdezés helyes elõkészítése A mysql_real_escape_string() minden változóra való alkalmazása megelõzi a fenti problémát. A következõ példa bemutatja adatbázis-lekérdezések "jó szokás" szerinti elvégzését, függetlenül a Magic Quotes beállítástól.
A kérés mostmár helyesen fog végrehajtódni, az SQL beszúrásos támadás nem fog mûködni. |
Megjegyzés: A mysql_real_escape_string() nem oldja fel a % és a _ karaktert. Ezek a MySQL-ben joker karakterek, amikor a LIKE, GRANT vagy REVOKE-ban szerepelnek.
Lásd még a mysql_escape_string(), mysql_client_encoding() és stripslashes() függvényeket valamint a magic_quotes_gpc, és a magic_quotes_runtime direcktívát.