MySQL adatbázis feltöltése PHP-val
Üdv!
A következő lenne a problémám:
Van egy php alapú alkalmazás, ahol fel kellene kb. 600 felhasználót töltenem jelszóval együtt. Nem igazán szeretném manuálisan csinálni, ezért kerestem a neten egy php kódot, ami egy szöveges fájlból megtenné ezt nekem. Kicsit testre kellett szabni, hogy a körülményekhez igazodjon, és azt hiszem sikerült is, de valami mégsem jó. Közben megjegyezném, hogy nem vagyok programozó, csak némi rálátásom van a dologra, egyszerűbb dolgokba bele tudok piszkálni, de ennyi.
Szóval a feltöltés megtörténik, de amikor be akarok jelentkezni, nem sikerül, a jelszót rosszul tárolja az adatbázis. A jelszó 32 karakteres szöveges mezőben van tárolva MD5 kódolással, erre való utalást találtam több helyen az eredeti program forrásában, ezért ezzel próbálkoztam, de amikor összehasonlítom az eredeti és a szegelt program által generált jelszót az adatbázisban, természetesen nem egyezik. Annyi segítséget már kaptam, hogy valószínűleg a jelszó beírása és kódolása között még történik valami változtatás, de nem tudok rájönni, hol és mi.
Nem tudom ebből a kódrészletből kiszűrhető-e valami:
$i_username = $g_db->qstr($i_username, get_magic_quotes_gpc());
if(get_magic_quotes_gpc())
$i_password = stripslashes($i_password);
$i_pass_hash = md5($i_password);
$i_pass_hash = $g_db->qstr($i_pass_hash, 0);
$i_time = time();
A környezet: MySQL client version: 4.1.11; phpMyAdmin - 2.11.1; a PHP talán 4.1-es (?) verzió.
A válaszokat előre is köszönöm.
■ A következő lenne a problémám:
Van egy php alapú alkalmazás, ahol fel kellene kb. 600 felhasználót töltenem jelszóval együtt. Nem igazán szeretném manuálisan csinálni, ezért kerestem a neten egy php kódot, ami egy szöveges fájlból megtenné ezt nekem. Kicsit testre kellett szabni, hogy a körülményekhez igazodjon, és azt hiszem sikerült is, de valami mégsem jó. Közben megjegyezném, hogy nem vagyok programozó, csak némi rálátásom van a dologra, egyszerűbb dolgokba bele tudok piszkálni, de ennyi.
Szóval a feltöltés megtörténik, de amikor be akarok jelentkezni, nem sikerül, a jelszót rosszul tárolja az adatbázis. A jelszó 32 karakteres szöveges mezőben van tárolva MD5 kódolással, erre való utalást találtam több helyen az eredeti program forrásában, ezért ezzel próbálkoztam, de amikor összehasonlítom az eredeti és a szegelt program által generált jelszót az adatbázisban, természetesen nem egyezik. Annyi segítséget már kaptam, hogy valószínűleg a jelszó beírása és kódolása között még történik valami változtatás, de nem tudok rájönni, hol és mi.
Nem tudom ebből a kódrészletből kiszűrhető-e valami:
$i_username = $g_db->qstr($i_username, get_magic_quotes_gpc());
if(get_magic_quotes_gpc())
$i_password = stripslashes($i_password);
$i_pass_hash = md5($i_password);
$i_pass_hash = $g_db->qstr($i_pass_hash, 0);
$i_time = time();
A környezet: MySQL client version: 4.1.11; phpMyAdmin - 2.11.1; a PHP talán 4.1-es (?) verzió.
A válaszokat előre is köszönöm.
Milyen alkalmazás
A másik probléma, hogy a PHP verzióját nem volna rossz a szerver rendszergazdájának frissíteni, tekintve hogy a 4.1-es PHP-hoz már biztonsági frissítéseket sem adnak ki.
Az alkalmazás
A PHP verziója nem biztos, hogy annyi, a phpinfo le van tiltva, ez csak a minimum követelménye egy-két programnak, amit kipróbáltam, és ezen nem akadt ki egyik sem.
A cím más
supesz
Escape
Ha minden adat stimmel, akkor az INSERT query-ben pedig minden egyes értéket megfelelően kell escape-elni (pl: mysql_real_escape_string). Léteznek függvénykönyvtárak, keretrendszerek, wrapperek, amik hatékonyan képesek kezelni ezeket a problémákat, csak rá kell keresni.
További hasznos leírás a PHP.net-en: http://www.php.net/manual/hu/security.database.sql-injection.php
Egy kis ízelítő, mit lehet elérni SQL Injection-nel:
http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/.
sql injection
köszi
supesz