Jag och en kompis håller på o bygger en webbshop med textfiler, inte MySQL. Vi skulle vilja att alla medlemskontons lösenord blir krypterade, hur gör man detta så det blir så säkert som möjligt?
Säker kryptering?
15 svar · 669 visningar · startad av web00132
Ta en titt på funktionerna crypt () och md5 (). Det finns säkrare sätt, men dom duger förhoppningsvis. :)
Om ngn hacker "lyssnar" på vår trafik så är det väl ganska lätt att dekryptera lösenordet om man använder md5, encrypt el dyl?
md5 () har jag för mig är en tvåvägsfunktion, men crypt () ( encrypt ()? ) är det inte.
Ok, men då borde ju crypt() vara bättre.
Men lösenordet skickas ju fortfarande i klartext eftersom det krypteras först på servern. Grejen är den att jag har ett JavaScript som krypterar i md5, asså innan den skickar till servern, men då är väl det scriptet lite onödigt om man ändå kan dekryptera det.
Hur gör man på stora sajter med säkerheten? Använder man bara typ crypt() på servern och inget på klientdatorn?
Någon som vet?
Inte den blekaste, men om du är så rädd för hackrare så skulle jag råda dig till att utveckla en egen krypteringsalgoritm för både JS och PHP, så att du kan kryptera och dekryptera ( ? ) både på klientsidan och serversidan.
ok, tack för dina svar
Sen bör du använda SSL, dvs kryptera trafiken mellan klient & server
Ursprungligen av SPiN md5 () har jag för mig är en tvåvägsfunktion, men crypt () ( encrypt ()? ) är det inte.
md5 är ju den som är envägskryptering...
Ursprungligen av web00132
Ok, men då borde ju crypt() vara bättre.
Envägskryptering är ju faktiskt helt värdelöst om man någonsin vill kunna dekryptera datan. Bättre är i sådana fall assymetriska algoritmer med publika/privata nycklar som exempelvis PGP/GPG gör (om det intresserar dig, sök på "public key infrastructure").
Ursprungligen av web00132 Hur gör man på stora sajter med säkerheten? Använder man bara typ crypt() på servern och inget på klientdatorn?
Någon som vet?
Skulle väl gissa att de som tidigare nämnts använder SSL/HTTPS för att kryptera kommunikationen. Sen har de väl databas- och/eller applikationsservrar som ligger tryggt bakom brandväggar (inget Riktigt System skulle använda textfiler utan mycket speciella anledningar).
När det gäller lösenord är det ingen större vits med att kunna dekryptera, annat än om användaren glömmer lösenordet förstås. Men då finns ju möjligheten att skicka ett nytt lösenord till användaren istället.
MD5 är "i princip" säker och det räcker med att du använder md5-funktionen i javascript. När någon loggar in krypterar du det inmatade lösenordet med samma funktion och skickar till servern. Där jämför du de båda kryptogrammen och om det är samma har användaren fyllt i rätt lösenord. Du behöver inte känna till lösenordet i klartext.
En nackdel med den här metoden är som någon påpekade att någon kan lyssna av trafiken när det krypterade lösenordet skickas. Denne någon kan sedan simulera inloggning och skicka det krypterade lösenordet till servern. Detta kommer man åt genom att använda SSL som någon sa och det är så som "riktiga" webbplatser brukar göra.
Eftersom alla verkar veta hur man använder sig av SSL (ingen frågar ju ;) så kanske någe av er kunde vara snäll och förklara hur man använder sig av det i praktiken ? Dvs, hur kan tex Jag lägga till det på min sida ? (även om det kanske inte är nödvändigt....)
Well... jag skulle ljuga om jag sade att jag har egen erfarenhet, men du kan kika på http://www.modssl.org/
md5 är ju den som är envägskryptering...
Hur är det nu då?
Detta kommer man åt genom att använda SSL som någon sa och det är så som "riktiga" webbplatser brukar göra.
Finns det ngn anledning att använda SSL ifall man inte har några kreditkortsfunktioner?
Sen har jag en ny fråga också.
Om man har en PASSWORD()- eller ENCRYPT()-kryptering på ett fält i en MySQL-databas så går det inte att jämföra ett lösenord med det krypterade fältet om alltihopa ligger på en Windowsserver, eller?
Som jag har förstått det så går det inte att använda PHP-funktionen crypt() på Windows och det är väl det man använder för att jämföra med ett krypterat fält i MySQL?
Någon som vet?
Finns det ngn anledning att använda SSL ifall man inte har några kreditkortsfunktioner?
Finns minst en, skydda userid/lösenord för inloggning på servern.
Tänk bara på att man även kan lyssna och fånga upp det krypterade userid:t och lösenordet. Vilket gör att det är möjligt för illasinnad att kommunicera direkt med dessa. Man beöver alltså inte veta vad klartexten är, utan bara vad som accepteras av servern.