Hirdetés

Keresés

Új hozzászólás Aktív témák

  • CSorBA

    őstag

    válasz Dave-11 #9270 üzenetére

    A linken elolvashatod miért, de tömören:

    Kiválasztod az adatbázisból AHOL a felhasználó="beírt név" és jelszó="beírt jelszó".

    Ha mondjuk valaki beírja jelszónak h. valami" OR "a"="a
    Akkor kikeresi a felhasználót és jelszót, VAGY pedig az a egyenlő a-val, ami mindig igaz. Tehát mindig teljesül a feltétel.

    Vagy még komolyabb, beírja h. DROP table, stb stb. És akkor kitöröl minden felhasználót a táblával együtt. Szóval igen nagy felelőtlenség.

    Ez a függvény röviden véd az ilyenek ellen, szóval speciális karaktereket, mint például a ' és " kiszedi abból, amire alkalmazod (most konkrétan nagyon sarkítottam). A lényeg, ha ezt alkalmazod egy változóra, akkor utána már szerepelhet az SQL parancsban. Nem kell minden változóra, csak az SQL parancsban lévőkre, és azt is elég csak a parancsban.

    Szóval pl.:

    $lekeres = mysql_query("SELECT * FROM tagok WHERE name = 'mysql_real_escape_string($username)'")

    ;

    Ha már itt tartunk, akkor véleményem szerint nem kell utána 3 ágra bontani (belépés, hibás jelszó, nincs felhasználó) Ilyennél elég kettő, belépés és hibás adatok. Mert ha rájön, hogy legalább a felhasználónevet eltalálta, akkor próbálkozhat a jelszóval. És így legalább a jelszót egyből bele is rakhatod a lekérésbe. De ez lehet csak személyes agymenés.

Új hozzászólás Aktív témák