FAQ |
Kalender |
2006-03-28, 12:04 | #1 | |||
|
||||
Supermoderator
|
Jag funderar lite över säkerheten i mitt system (som ännu ej är i bruk).
Det är så att jag använder session_register() på ett objekt av klassen User. Där användarnamn, lösenord osv finns lagrat. Detta för att jag vill på ett enktelt sätt komma åt all användarinformation på alla kommande sidor. Nu undrar jag om jag behöver kolla Objektet som kommer tillbaka så det inte har ändrats av användaren. Exemeplvis innuti objektet finns information lagrad om användaren är en vanlig användare, moderator eller en administratör. Finns det möjlighet för användaren att modifiera detta och på så sätt skapa säkerhetshål i mitt script? I så fall behöver jag kontrollera all kritisk data överst i varje fil. |
|||
Svara med citat |
2006-03-28, 12:26 | #2 | |||
|
||||
Flitig postare
|
Det är generellt sett inte bra att lagra objekt i sessionsvariabler, eftersom objektet först serialiseras (heter det så?) och sparas i en fil på servern, och sen avserialiseras (unserialize) nästa gång användaren skickar en request till servern. Detta tar onödigt lång tid. Det är bättre att lagra värdena i din databas, och skapa ett nytt objekt för varje request. Du ska försöka lagra så lite som möjligt i sessionsvariabler.
Eftersom sessionsvariabel-filen lagras på servern finns det inget sätt för en användare att ändra på den (såvida han inte har tillgång till servern). Risken som finns är dock att en användare får reda på ett sessions-id från en administratör, och lurar servern med det sessions-id:et att han är administratören. |
|||
Svara med citat |
2006-03-28, 13:00 | #3 | |||
|
||||
Bara ett inlägg till!
|
Citat:
Använder folk PHP's inbyggda session-hanterare till seriösa sajter? Det var länge sen jag ens tänkte på att det faktiskt finns en inbyggd i PHP. Den var kass för 4 år sedan (då jag senast hade med den att göra). Koda en egen istället. Det blir enklare i längden, ger mycket bättre prestanda, är mycket säkrare (om man har koll på bitarna) och är inte skadlig för hårddiskarna. |
|||
Svara med citat |
2006-03-28, 14:00 | #4 | |||
|
||||
Mycket flitig postare
|
Citat:
|
|||
Svara med citat |
2006-03-28, 14:06 | #5 | |||
|
||||
Mycket flitig postare
|
Citat:
Du kan fortfarande autenticera mot det. Jag brukar göra så här i en funktion för autenticering: Ta användarnamnet som användaren skickar in, Skapa en factory med användarobjekt (jag har få användare), Hämta objektet med användarnamnet användaren skickade in, Kryptera lösenordet användaren skickade in med lösenordet i användarobjektet jag fick som salt, Om resultaten är samma som lösenordet i användarobjektet returnera objektet, annars null. Sen i applikationen, om sessionen har ett userobjekt som inte är null, är användaren inloggad, annars inte. |
|||
Svara med citat |
2006-03-28, 14:12 | #6 | |||
|
||||
Supermoderator
|
Lösenord lagrar jag inte i klartext utan med md5().
|
|||
Svara med citat |
2006-03-29, 02:43 | #7 | |||
|
||||
Mycket flitig postare
|
Citat:
|
|||
Svara med citat |
2006-03-29, 08:42 | #8 | ||
|
|||
Supermoderator
|
md5:ar man utan salt krävs det endast att hitta en dublett för att logga in (jmf att använda salt då exakt lösenord måste hittas). Se vad zoran skrev, även om det kanske är smart att använda något mer än bara användarnamn som salt. För övrigt föredrar jag nog sha1.
__________________
www.ip2nation.com (ip till land) |
||
Svara med citat |
2006-03-29, 08:59 | #9 | |||
|
||||
Mycket flitig postare
|
Citat:
|
|||
Svara med citat |
2006-03-30, 15:52 | #10 | |||
|
||||
Medlem
|
Citat:
|
|||
Svara med citat |
Svara |
|
|