Avatar billede detziaw Nybegynder
31. marts 2012 - 18:24 Der er 11 kommentarer og
1 løsning

Login system

Hej Eksperten.

Nu har jeg siddet de sidste par timer og søgt nettet tyndt efter et ordenligt login-system. Jeg har fundet utallige scripts der ikke virkede enten fordi de bare er kodet dårligt med fejl, eller er blevet forældede pga. opdatering af PHP og/eller mysql. Selv her på Eksperten findes flere artikler om et login system, men hvor jeg, efter at have læst kommentarerne, kan konkludere, at scriptet er fyldt med den ene eller den anden type fejl. Er det virkelig så stort et projekt at kode sådan et system?

Jeg leder efter et system der har:

- En side til at oprette en bruger.
- Et script til at logge ind, som kan sættes ind hvor som helst.
- Mulighed for selv at vælge hvilke sider brugeren kan komme ind på.
- Gruppering af brugere (rang 1, rang 2, rang 3) og dermed også begrænse adgangen til diverse sider alt afhængig af brugerens rang.

Hvis nogen kender et script der kan dette, som virker på de NUVÆRENDE versioner af hhv. php og mysql, vil jeg være overlykkelig!

Helst brug af sessions, men har ingen idé om hvor sikkert det er. Måske kan det inkluderes i følgende spørgsmål:


Hertil kommer så, at jeg også har set mange personer der kommenterer loginsystemernes sikkerhed. Så gerne at nogen evt. kunne komme med nogle pointers til hvordan man gør et loginsystem sikkert, hvis man har i mente, at systemet skal være tiltænkt et community med en masse brugere. Jeg går ud fra det er uundgåeligt med ondsindede personer der prøver at hacke sig ind.

Udover det kommer så valideringen af inputs. Hvilke valideringer er vigtige at have med, hvis vi antager det er felter som 'navn', 'email' og 'password' der er med at gøre? F.eks. så ved jeg, at det er godt kræve at det kun er bogstaver og tal i navn(nick), og under email skal man vel på en eller anden måde kontrollere om der er @ skrevet i feltet?

Håber nogen vil tage sig tid til at svare på en eller flere af ovenstående spørgsmål. Alle de kommentarer jeg har læst til de forskellige loginsystemer har blot konstateret hvilke fejl der foreligger i systemerne, i stedet for at komme med en reel løsning. Derfor dette indlæg der kan hjælpe med at afklare disse problemer.

På forhånd mange tak.
Avatar billede claes57 Ekspert
31. marts 2012 - 20:10 #1
jeg vil tro, at wordpress har det - der er mange muligheder for skribenter og holdsport mv...
Alt andet lige, så er det lettere at bruge noget tid på at finde et standardsystem, og så køre videre på det, end at lave alt fra bunden selv.
Avatar billede detziaw Nybegynder
31. marts 2012 - 20:21 #2
Hej claes57

Efter at have læst din kommentar tvivler jeg lidt på om du har læst hele indlægget igennem(??) :-) Hvis dette er tilfældet, så søger jeg netop det du beskriver. Et standardsystem med mulighed for at bygge videre :-)

Mht. Wordpress så foretrækker jeg at lave mit eget fremfor at springe let og elegant over og bruge deres :-)
Avatar billede Slettet bruger
31. marts 2012 - 21:45 #3
Hvis du ser det nødvendigt at lave dit eget login-system, så er vi er nødt til at dele det op i nogle mindre dele.

1) Opret bruger. Her vil du som minimum have et brugernavn og kodeord. Brugernavnet kan evt. være e-mail adressen. Andre data som f.eks. navn er noget du hæfter på dine brugerdata. For at gøre brugeroprettelsen sikker kan du f.eks. bruge ssl (hvis du vil investere i et ssl certifikat). Og hvis du vil sikre brugernes kodeord (så længe de ellers er svære at gætte) i tilfælde af at din database bliver hacket, så gemmer du ikke kodeordet, men blot en hashcode (+salt). Og hvis du vil sikre dig mig bots der opretter brugere automatisk, kan du f.eks. tilføje et captcha system. Alternativt kan du kigge på OpenID, og se om deres login system er noget du synes kan bruges til dit website.

2) Validering af input. Der kan du bruge regex til at validere inputs (f.eks. e-mail for at tjekke der er et @). Som hjælp til brugeren kan du vælge at tilføje det på klienten med noget javascript inden der submittes, men det skal stadig valideres på serveren.

3) Login. Der har du kun behov for brugernavn og kodeord. Det kan du lægge på din side hvor du har lyst. Og hvis du har gemt kodeordet som en hashcode i din database, så skal du bare lave den samme hashcode fra kodeordet der kommer ind via login og tjekke med det du har i din database. Når brugeren er logget på, gemmer du f.eks. brugernavn eller bruger id i session (og hvad du ellers har lyst til), så klarer php resten for dig (man vil ikke kunne se de data i de cookies den smider, men der er en risiko for at en session kan hijackes).

4) Bruger rettigheder. Brugeren kan f.eks. have status som almindelig bruger eller admin. Så de sider brugeren prøver at tilgå skal på en eller anden måde tjekke brugeren status (som du måske allerede har gemt i sessionen fremfor at slå det op i databasen hver gang).

I øvrigt synes jeg tit der er kommet forslag til hvordan et login system kunne laves bedre når der er blevet spurgt til det. Det er bare et spørgsmål om man selv vil gøre en indsats. :)

Og folk er velkomne til at komme med forbedringer til mit forslag.
Avatar billede claes57 Ekspert
01. april 2012 - 11:28 #4
Jeg ville så tage et (gammelt) system, og oversætte det til php5
http://www.phpbuilder.com/columns/tim20000505.php3?page=1
er en mulighed. Dertil kan du evt også tilføje
http://www.white-hat-web-design.co.uk/blog/php-captcha-security-images/
Avatar billede detziaw Nybegynder
01. april 2012 - 15:10 #5
tolamaps

Mange tak for dit fyldestgørende svar, det kan helt sikkert bruges og det er præcis informationer i den retning jeg søger :-) SSL og OpenID er umiddelbart ikke noget for mig. Jeg tager hellere udfordringen op og laver systemet præcis som jeg vil have det ;-)

Nu er jeg ikke den skarpeste til php, så jeg har lige nogle enkelte spørgsmål angående sessions. Når nu jeg tænker rettigheder, er det så så enkelt, at jeg bare kan lave brugerniveauer som f. eks. 1,2,3 osv. hvor 1 er administrator f. eks., og så bare skrive ind i en session på hvilket niveau man er? Og så udføre en simpel forespørgsel på hver side, der kontrollerer hvilket tal man har i databasen under brugerniveau? :-)

Udover det så siger du, at sessions kan blive hijacked. Hvor meget kan man stole på, at dette ikke sker? Bruger store hjemmesider også den type login med den risiko?

Jeg takker igen for dit fyldestgørende svar :-)

claes57

Mange tak for links de ser umiddelbart behjælpelige ud :-) Vil helt sikkert tage Captcha i brug, da det virker enkelt og ligetil, så selv jeg kan finde ud af at implementere det i mit kommende system ;-)
Avatar billede Slettet bruger
01. april 2012 - 19:30 #6
Ja, du kan sagtens gøre som du beskriver med at gemme en værdi for brugerniveauet i sessionen, og tjekke på hver side om brugeren har lov til at se denne side. Der findes sikkert smartere måder at gøre det på, hvis du har mulighed for at lade webserveren kontrollere hvilke sider en bruger må komme ind på. Men jeg har ikke så meget erfaring med det, så der kan jeg ikke hjælpe.

Mht. session hijacking, så er det også en risiko på de større hjemmesider, specielt hvis to personer er koblet på det samme (åbne) netværk og forbindelsen til websiden ikke er krypteret. F.eks. findes der et plugin til firefox som kan bruges mod Facebook: http://en.wikipedia.org/wiki/Firesheep
Risikoen er nok ikke så stor, og uden at bruge ssl ville jeg se bort fra det. :)
Avatar billede detziaw Nybegynder
01. april 2012 - 20:19 #7
Okay mange tak skal du have for hjælpen :-) Det giver mig helt sikkert mod på at gå i gang med at kode et login-system :-)
Avatar billede detziaw Nybegynder
01. april 2012 - 20:20 #8
Smider I begge et svar, så prøver jeg om jeg kan fordele dem?
Avatar billede Slettet bruger
01. april 2012 - 21:12 #9
Jeg samler ikke, så spring mig over.
Avatar billede DiscSunshine Nybegynder
03. april 2012 - 21:08 #10
Hey hvis du giver mig 200 point vil jeg godt lave et sæl til dig så du altid kan sette det ind på alle dine sider og det virker bar hvad siger du til det
Avatar billede detziaw Nybegynder
03. april 2012 - 21:42 #11
Hej DiscSunshine.

Jeg siger mange tak for tilbuddet, men jeg fandt endelig et script der virkede, og har så selv bygget de ting på jeg ville have, så jeg nu har et velfungerende login-system :-) Men ellers tak.
Avatar billede detziaw Nybegynder
05. april 2012 - 03:41 #12
#11
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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