02. november 2011 - 21:33Der er
15 kommentarer og 1 løsning
Opbevaring af passwords under session
Hej,
Kom til at fundere over den sikreste måde at opbevare passwords sålænge en bruger er aktiv.
For at komme med et eksempel kan vi sige at jeg ønsker at lave et online ftp-program. Brugeren logger så ind med brugernavn/password. Dernæst har han mulighed for at indtaste oplysninger om en fjern ftp-server og så ellers bruge hjemmesiden som en ftp-client.
Her vil jeg så høre hvordan jeg bedst opbevarer hans brugernavn og password til fjernserver? Det skal være en måde hvorpå det ikke tager 100 år at dekryptere data'en men samtidig også er sikkert?
Tænkte på om man skulle gemme det i en session med lettere kryptering, men den slettes jo så bare ikke med sikkerhed efter endt besøg. Er database eller en separat fil pr bruger en bedre ide?
Lidt blandede ideer: A) login ind paa FTP server naar bruger gaar paa siden, holds connection til FTP server aaben og gem ikke password B) brug session uden kryptering udfra en betragtning om at session storage vel er lige saa sikker som PHP siden (hvis nogen har adgang til session storage har de sikkert ogsaa adgang til at rette PHP koden til at gemme en kopi af password) C) gem oplysningen i en client side session cookie D) gem i session og brug staerk kryptering - det koster ikke noget at AES kryptere & dekryptere - problemet er her hvor skal key gemmes: D1) hardcoded i PHP D2) i client side session cookie D3) permanent kendt info som f.eks. brugernavn D4) midlertidigt kendt info som f.eks. client IP adresse
Jeg kan ikke entydigt sig hvad der er bedst for dig.
Ja, det overså jeg godt nok. Men uanset om passwordet er krypteret eller ej, bør du have SSL forbindelse, for at gemme i session. Den dertil mere sikre side må være at gemme som cookie, så er det kun lokale sikkerhedshuller der kan være en evt. risiko.
Vil tillade mig at udelukke A), da det gerne må være generelt - Hvad nu hvis vi også vil tilføje mail til servicen som en slags online skrivebord?
C) Ville måske ikke være det smarteste hvis vi tilgik systemet fra en offentlig computer og folk ikke loggede af - Men eftersom dette mere er et tankeeksperiment, kunne det jo sagtens være en løsning alligevel.
I forhold til D), hvor store data-mængder snakker vi om skal til før det øger ventetiden? og mon ikke man kunne lave key som en kombination af dine Dx) varianter?
Bryder mig nu heller ikke så meget for ideen med at gemme passwords i cookies - så skal de jo netop vandre frem og tilbage mellem client og server for hver eneste indlæsning.
Er kommet frem til at krypterede cookies vel egentlig er det mest sikre, da der så ikke ligger passwords på serveren. Ved brug af sessions gemmes de jo i en fil og det samme hvis man gemmer dem i databasen.
Så langt så godt. En bruger vil indtaste oplysningerne til den ønskede fjernserver og disse vil blive gemt i en cookie. Men hvad så hvis jeg ønsker at gemme det til næste gang? Så er det bedste vel egentlig at gemme krypteret i databasen?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.