magic_quotes_gpc sql injection ellen nem elég?
Egy másik fórum témában már felvetettem a kérdést, itt akkor folytatnam:
Egy "select * from users where name='$_POST[name]' and pass='$_POST[pass]'" milyen veszélyt rejt "magic_quotes_gpc = 1" mellett?
php.net:
" A mysql_real_escape_string() a MySQL könyvtár mysql_real_escape_string függvényét hívja meg, amely visszaperjeleket illeszt a következõ karakterek elé: \x00, \n, \r, \, ', " és \x1a."
"\x00, \n, \r, \, \x1a" ezeket miért kell levédeni?
üdv.: Zsolt
■ Egy "select * from users where name='$_POST[name]' and pass='$_POST[pass]'" milyen veszélyt rejt "magic_quotes_gpc = 1" mellett?
php.net:
" A mysql_real_escape_string() a MySQL könyvtár mysql_real_escape_string függvényét hívja meg, amely visszaperjeleket illeszt a következõ karakterek elé: \x00, \n, \r, \, ', " és \x1a."
"\x00, \n, \r, \, \x1a" ezeket miért kell levédeni?
üdv.: Zsolt
Kiegészítő kérdés
Üdv.: fberci
<Nincs cím>
adatbázis függőség és PHP sebezhetőségek
Ezen felül még az a probléma is fennáll, hogy nem minden adatot adatbázisba akarsz betenni, hanem mondjuk egy hibásan kitöltött űrlapnál vissza akarod juttatni a felhasználónak. Akkor a plusz visszaperjelek határozottan zavaróak, és stripslashes()-t kell alkalmazni. De ha adatbázisból töltöd fel ugyanazt az űrlapot, akkor viszont nem kell, és így növeled az alkalmazásod bonyolultságát feleslegesen, sosem tudod, most milyen adattal dolgozol... Rasmus Lerdorf, a PHP elindítója javasolta ennek a lehetőségnek a teljes törlését a PHP 6-ból! Szóval nem célszerű használni!
A \ természetesen kivételesnek számít, mert azt használja a MySQL a kivételes karakterek jelzésére, az aposztróf és idézőjel a karaktersorozat beágyazás miatt fontos, a \x00 pedig a nulla bájt, ami PHP-ben a karaktersorozatok végét is jelzi, és ezt is érdekes támadásokra lehet felhasználni. A többi dolgot a bináris adatok miatt jelzi kivételesnek, és ráadásul figyelembe veszi az aktuális (paraméterben megadott) kapcsolat által használt karakterkódolást is, úgyhogy csupa jót tesz veled.
thx
üdv.: Zsolt
az már jó :)
Egyéb támadási módok
Ez esetleg érdekelhet: PHP a frontvonalon, védekezés a bemeneten.
Felhő
mysql_escape_string() nem megy
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '\'1124552416\', \'195.56.240.107\', \'amazonas-2139.adsl.datane
Mi lehet a baj?
Üdv.: fberci
Rájöttem...
Üdv.: fberci