Avatar billede andy17 Nybegynder
11. oktober 2008 - 23:16 Der er 8 kommentarer

Login er case sensitive

Hey gutter!

Jeg har et PHP login system, hvor brugernavn + kodeordet er case sensitive, hvilket jeg gerne vil ændre. Har rodet med noget strtolower, men det er ikke optimalt, da de jo ikke skal ændres; den skal bare finde dem ligemeget om man indtaster store eller små bogstaver.

Her er koden (har simplificeret det for jeg, så hvis jeg har lavet en simpel fejl, så er det derfor):

http://www.jokeheaven.eu/login.txt


Any ideas? :)
Avatar billede olebole Juniormester
11. oktober 2008 - 23:27 #1
<ole>

Går ønsket specifikt på at sænke sikkerheden?  =)

/mvh
</bole>
Avatar billede thesurfer Nybegynder
11. oktober 2008 - 23:30 #2
Måske er der noget jeg ikke helt har forstået mht koden..

Men sagen er meget simpel:

hent alle records hvor username = brugernavn og password = kodeord

Antallet af rækker den returnerer:
0 = brugernavn / kodeorde kombinationen findes ikke (forkert login data)
1 = alt er ok

Og så er det i din SQL sætning, at du enten skal sammenligne med med lowercase ELLER uppercase..
Avatar billede erikjacobsen Ekspert
11. oktober 2008 - 23:31 #3
Jeg tror du har et gevaldigt anderledes alvorligt problem i din kode. Person A kan logge ind med person Bs password.
Avatar billede thesurfer Nybegynder
11. oktober 2008 - 23:34 #4
Jeg er ikke PHP-programmør, men noget i stil med:

$result = mysql_query("SELECT username, password FROM registrations WHERE LOWER(username) = '" . strtolower($mysql_username) . "' and LOWER(password) = '" . strtolower($mysql_password) ."'") or die (mysql_error());
Avatar billede erikjacobsen Ekspert
11. oktober 2008 - 23:44 #5
Felter er normalt ikke case-sensitive i mysql - så alt det bøvl behøv's ikke
Avatar billede olebole Juniormester
11. oktober 2008 - 23:51 #6
Jeg havde ikke set på koden, men reagerede udelukkende på den voldsomme indsnævring af mulige tegn. Nu, jeg har set den, må jeg tilslutte mig Eriks påpegning af et fatalt problem i din kode!  =)

Men når nu du barberer sikkerheden ned ved at fjerne næsten halvdelen af de tegn en potentiel hacker skal vælge imellem, kan man vel bare fjerne login helt. Så bliver det endnu lettere at være bruger  ;o)

Som Erik påpeger, er søgninger på felter normalt ikke case-sensitive i MySQL, hvilket dog kan afhælpes, hvis man ikke gemmer password'et - men f.eks. en md5 hash (som vil være forskellig alt efter stavning med store og små tegn).
Avatar billede andy17 Nybegynder
12. oktober 2008 - 00:03 #7
Puha, det er jeg ked af, at I skulle udsættes for. Har rettet det nu, Erik. Det er nemlig et script jeg fandt på nettet dengang jeg var HELT nybegynder, så har ikke lige kigget på det siden. Nu kunne jeg dog godt se fejlen.

Desuden kom jeg til at tænke på, om det mon skyldes, at mit webhotel kører på Linux - altså om det er derfor mit login er case sensitive. Sådan er det jo med filnavne. Jeg vil overveje at lade det forblive sådan, men hvis der er nogen der ved hvordan jeg kan rette det, så må I meget gerne skrive; så har jeg i hvert fald muligheden! :)

Og mange tak for at spotte en kæmpe fejl for mig. Så kan jeg da også bare lære ikke at stole på random scripts der ligger på nettet. Jeg er heldigvis blevet bedre til at spotte sådanne fejl, men havde ikke lige kigget tilbage på dette script. ;)
Avatar billede erikjacobsen Ekspert
12. oktober 2008 - 00:09 #8
Dit login er i koden case-sensitiv fordi du sammenligner i PHP.

Hvem ved, måske er du den første, der finder et script på nettet med fejl i ?

:)
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
Computerworld tilbyder specialiserede kurser i database-management

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