Avatar billede Slettet bruger
15. juni 2003 - 14:29 Der er 10 kommentarer og
1 løsning

MySQL password.c - sikkerheds spørgsmål

Fra MySQL manualen:

MySQL does not store passwords in plaintext form for anyone to see. Rather, the password supplied by a user who is attempting to connect is encrypted (using the PASSWORD() function). The encrypted password is then used when the client/server is checking if the password is correct. (This is done without the encrypted password ever traveling over the connection.) Note that from MySQL's point of view the encrypted password is the REAL password, so you should not give anyone access to it! In particular, don't give normal users read access to the tables in the mysql database!

Endvidere:

Do not ever give anyone (except the mysql root user) access to the user table in the mysql database! This is critical. The encrypted password is the real password in MySQL. Anyone who knows the password which is listed in the user table and has access to the host listed for the account can easily log in as that user.

Og fra en MySQL udvikler:

Well, actually, client scrambles the password with PASSWORD() and then
uses some kind of challenge-response, so no eavesdropping will help,
but reading the 'user' table is enough to login as everybody.
It is written in BIG RED LETTERS in several places in the manual,
that no user should be given access to user table exactly for this reason.

Still, there are protocols that satisfies both your conditions, and
may be MySQL authentification protocol will be strengthened in 4.0.

Man kan altså logge ind, hvis man har adgang til brugerens krypterede (PASSWORD()) password fra user tabellen.
Ved ændring af MySQL klienten, til ikke at kryptere password'et inden det sender det til serveren.

Det kræver ændring af password.c filen. Er der nogle der kan overskue hvordan denne adgangskontrol helt
præcist fungerer. Samt hvilke ændringer der er påkrævet, for at man kan logge ind med det krypterede password.

Link til password.c : htttp://www.fyrdenaf.dk/password.c
Avatar billede arne_v Ekspert
15. juni 2003 - 15:21 #1
Uden at beskylde dig for noget - tør man spørge om hvad du
skal bruge det til ?
Avatar billede Slettet bruger
15. juni 2003 - 15:26 #2
Ja det spørgsmål måtte jo komme.

Jeg prøver bare at lave en simpel MySQL klient, og faldt så over ovenstående, som jeg prøver at forstå.
Avatar billede arne_v Ekspert
15. juni 2003 - 16:17 #3
Jeg kan forklare dig hvad der sker:

plain text password gemmes aldrig

på serveren gemmes en one-way hash af plain text password

login sker som følger:

server genererer random string
server sender random string til client
client beregner X = funktion(random string, one-way hash af det af brugeren angivne password)
client sender X til server
server beregner Y = funktion(random string, one-way hash fra tabel)
server sammenligner X og Y
Avatar billede arne_v Ekspert
15. juni 2003 - 16:17 #4
Og:

client beregner X = funktion(random string, one-way hash af det af brugeren angivne password)

kan erstattes af:

client beregner X = funktion(random string, one-way hash stjålet fra serveren)
Avatar billede Slettet bruger
15. juni 2003 - 16:48 #5
Ja, det jeg med på, tror jeg.

password.c indeholder en del funktioner. Så vidt jeg kan se, er de eneste, der skal bruges af klienten scramble() og hash_password(). Er dette korrekt?

Hvad er de andre funktioner så til? Er der nogle serveren bruger?
Avatar billede arne_v Ekspert
15. juni 2003 - 18:04 #6
Klienten bruger scramble, serveren bruger check_scramble. De øvrige
funktioner inklusive hash_password bruges af de 2 x scramble.
Avatar billede Slettet bruger
15. juni 2003 - 18:08 #7
Tak.

Sidste ting:

Den hash hash_password genererer er en unsigned int, men den hash som PASSWORD() generer er jo en streng.

Er det denne konverting som char_val foretager?
Avatar billede arne_v Ekspert
15. juni 2003 - 18:15 #8
hash_password konverterer fra string til en 8 byte integer (2 long).

make_scrambled_password konverter fra strimg til en string med en
hex repræsentation af hash (16 char må den være) - og den kalder
så hash_password.
Avatar billede Slettet bruger
15. juni 2003 - 18:56 #9
Nu hænger det sammen. Mange tak for det :)

Læg et svar.
Avatar billede arne_v Ekspert
15. juni 2003 - 18:57 #10
svar
Avatar billede Slettet bruger
15. juni 2003 - 19:34 #11
Det er sku lidt for skørt lavet, at det er muligt. Men det er vist også ændret i version 4.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester