ugrás a tartalomhoz

MySQL adatbázis feltöltése PHP-val

topikolos · 2008. Nov. 13. (Cs), 01.05
Ü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.
 
1

Milyen alkalmazás

janoszen · 2008. Nov. 13. (Cs), 08.48
Egyetlen lényeges paramétert felejtettél el: milyen alkalmazásról beszélünk itt? Mert egyáltalán nem kizárt, hogy nem nyers MD5-öt használ.

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.
2

Az alkalmazás

topikolos · 2008. Nov. 13. (Cs), 11.57
iGiveTest, erről van szó. Tehát generáltak nekem 600 felhasználónevet és jelszót, és szeretném bevinni. A forráskódot esetleg át tudom küldeni, ha esetleg így tudna valaki segíteni. Én úgy gondoltam eddig, hogy amit beidéztem forráskód, ott lehet a megoldás, ahol a programban jelszókezelés van, ott ezekbe a kódsorokba futottam. Persze nagy esély van arra is, hogy tévedek.

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.
3

A cím más

supi007 · 2008. Nov. 30. (V), 23.46
A cím alapján jó ez a topic nekem, de én másról szeretnék információt kapni. Mire kell figyelni, ha a felhasználó által bevitt adatot az adatbázisba szeretném felvinni? Egy 'elkapott mondatból' tudom, hogy nem szabad felvinni közvetlenül $_POST-ból adatot a DB-be, de nem tudom ez mit jelent. Valaki egy rövid összefoglalást vagy forrást tudna adni?

supesz
6

Escape

Poetro · 2008. Dec. 1. (H), 13.14
Meg kell vizsgálni, hogy a POST értékek megfelelők, ha számot vársz, számok, ha e-mail címet e-mail, stb, vagy vki nem módosította a checkbox, radio, select (szerk.), hidden értékeket, azaz azokat kapod vissza, amiket te korábban megadtál, és vársz (whitelist).
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/.
4

sql injection

gex · 2008. Dec. 1. (H), 11.56
keress rá erre a kifejezésre akár itt akár a guglin. még wikipédiás szócikk is van róla.
5

köszi

supi007 · 2008. Dec. 1. (H), 12.59
Köszönöm. Nézem, olvasom őket.

supesz