FAQ |
Kalender |
2008-01-17, 10:38 | #61 | |||
|
||||
Klarade millennium-buggen
|
Citat:
Regeln man kan tillämpa är väl den att om data behöver krypteras så är det ändå för känsligt för att ö.h.t lagras på klienten. |
|||
Svara med citat |
2008-01-17, 11:16 | #62 | ||
|
|||
Mycket flitig postare
|
Citat:
Kommer någon över cookien så kommer dom in på sidan, men man kommer aldrig åt lösenordet vilket är väldigt viktigt eftersom många har samma lösenord på flera ställen. |
||
Svara med citat |
2008-01-17, 11:28 | #63 | |||
|
||||
Mycket flitig postare
|
Citat:
Jag är på din linje med att enbart lagra user-id i sessionen, mer behövs inte. Möjligen att man som sagt lagrar IP för att låsa sessionen till IP-adressen. Nu börjar det här bli lite uttjatat... |
|||
Svara med citat |
2008-01-17, 11:55 | #64 | |||
|
||||
Mycket flitig postare
|
Att lagra känsliga uppgifter i en cookie bör man vara försiktigt med, själv sparar jag inga egna uppgifter i cookies, det som enda som lagras i cookies är PHPs egna slumpnummer PHPSESSID.
Så här gör jag för att få minimera säkerhetsproblem: Pseudo-kod för Login-sida med PHP: 1. Visa login sidan för klienten, klienten fyller i uppgifterna och POSTar 2. Rensa POST variablerna från ej tillåtna tecken och kontrollera ev. tomma fält 3. session_start() för att skapa PHP sessionen (PHP skapar cookien PHPSESSID) 4. Om variabel $_SESSION['count'] ej satt, sätt den till 1 5. Om variabel $_SESSION['count'] == 5, presentera en sida som säger "För många felaktiga försök, prova igen om xx minuter", exit; 6. Kontrollera användarnamn och lösenord mot min databas 7. Om fel användarnamn eller lösen, öka $_SESSION['count'] med 1 och gå tillbaka till punkt 1. 8. Om anv.namn + lösenord stämmer: Skapa $_SESSION['hash'] = md5(PHPSESSID + user_id + $_SERVER['REMOTE_ADDR]) Skapa $_SESSION['userid'] = userid från databasen 9. Visa klientens skyddade sida Underliggande skyddade sidor startas alltid med check_login(); Pseudo-kod: funktionen check_login() { session_start(); kolla att $_SESSION['hash']==md5(PHPSESSID + $_SESSION['userid'] + $_SERVER['REMOTE_ADDR]) Om det ej stämmer , presentera inloggningsidan, exit; Om ok, bara att gå vidare och visa den skyddade sidan för klienten } |
|||
Svara med citat |
2008-01-17, 12:01 | #65 | ||
|
|||
Mycket flitig postare
|
SimonP: Ett tips är att lagra antalet misslyckade försök i databasen istället för i sessionen, eftersom en angripare kan använda ett script som raderar sessionscookien efter varje misslyckat försök och på så sätt få en ny session för varje försök.
I övrigt tycker jag det ser bra ut! |
||
Svara med citat |
2008-01-17, 12:19 | #66 | |||
|
||||
Mycket flitig postare
|
Citat:
På en ny sida som jag håller på med kommer jag att skippa PHPs sessionshantering, och göra en en egen sessionshantering i MYSQL, där mysql tabellen är av MEMORY-typen för att få bra prestanda och slippa hårddiskbaserade lösningar, PHPs egna sessioner lagras som default på serverns hårdisk. |
|||
Svara med citat |
2008-01-17, 12:31 | #67 | ||
|
|||
Mycket flitig postare
|
Har man egen server så är det snabbt gjort att ändra i php.ini så att sessionshanteringen ligger i minnet, men att bygga en egen sessionshantering är ju också ett alternativ!
|
||
Svara med citat |
2008-01-17, 13:10 | #68 | |||
|
||||
Flitig postare
|
En bra grej att göra är att typecast'a värden som är integers om du tar in dessa från användaren. typ
$id = (int)$_POST['id']; Så blir det inga problem i databasen sen |
|||
Svara med citat |
2008-01-17, 14:43 | #69 | |||
|
||||
Mycket flitig postare
|
Citat:
Jag testade med session.save_handler = mm på två Windows servrar och det funkade inte. Har inte testat på linux servrarna ännu. |
|||
Svara med citat |
2008-01-17, 15:46 | #70 | ||
|
|||
Mycket flitig postare
|
Citat:
Om inte annat så är det bara att skapa en ramdrive ange den som session.save_path |
||
Svara med citat |
Svara |
|
|