Hirdetés

Keresés

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

  • Peter Kiss

    őstag

    válasz Brown ügynök #11256 üzenetére

    Adatbázist használva is van serialization, disk művelet, de még a remote call is befigyel, szóval gyorsabb nem lesz.

    ---

    A session-kezelést illene szétválasztani:
    "Adott felhasználó bejelentkezve tartása"
    Adattárolás

    Az elsőhöz először az kell, hogy párhuzamosan menjen adatbázisban és cookie-ban is a session-kulcs kezelése:
    Adatbázisban: session-kulcs, user ID, valamilyen gépazonosító (IP, user agent), létrehozás dátuma, lejárat dátuma, perzisztens-e
    Sütibe: egyedül a kulcsot kell leküldeni (megfelelő lejárati dátummal, HTTP only, miegymás)

    Kulcsnak teljesen mindegy, ki mit használ, annyit kell csak figyelembe venni, hogy az adott környezetben lehetőleg egyedi legyen, pl. egy V4-es GUID teljesen jó.
    Ennek cseréjét mindenképpen meg kell oldani, hiszen van 2 pont, ahol mindenképp kell: bejelentkezés és a kijelentkezés.

    Az adatbázisban a session lejárati idejét változtatni kell, amennyiben a session nem perzisztens: mindig ki kell tolni annyival a lejárati időt, amennyivel akarjuk (mondjuk 20 perc), minél hosszabb ez az idő, annál nagyobb a biztonsági kockázat (esetleg pl. akkor, mikor úgy jön a kérés, hogy már csak 1 perc van hátra a lejáratból, akkor cserélünk egy session id-t is).

    Az adatok mentése már egy más dolog, ott annyit kell tennünk, hogy meg kell felelni az adott PHP elvárásainak (5.4-ben megjelent interface már említve lett), ez pl. adatbázisba mentés esetén azt jelenti, hogy meg kell oldanunk az adatok serialization-jét és az adatbázisba való benyomását (pl. egy TEXT típusú mezőbe a session id-hoz kötve).

    Ha valaki ki akarja védeni a man-in-the-middle támadást, akkor használjon SSL-t.

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