Ik heb een site, ik heb er een brak inlog systeem achter zitten. Wat doe ik nu?

1. Ik heb een tabel met een gebruiker, wachtwoord (md5) en type (admin of gebruiker)
2. Persoon logt in met juiste wachtwoord/gebruikersnaam
3. Een sessie en of cookie wordt aangemaakt met gebruiker is admin of gebruiker is gebruiker. $_SESSION['type']
4. Nu check ik bij pagina's waar alleen gebruikers mogen komen of er een sessie of cookie is met $_SESSION['type'] en of daar instaat of hij admin of gebruiker is.

Dit is natuurlijk zeer onveilig (maakt ook niet super veel uit, want zoveel bijzonders is er niet). Alleen ik wil het toch ietsjes beter regelen.

Mijn vraag:
Ik wil het bovenstaande eens goed overdoen. Waar moet ik rekening mee houden als ik een redelijke beveiligde website wil hebben (ik zeg redelijk, het is namelijk geen bank waar men geldzaken afhandeld).

Ik heb het 1 en ander gelezen over Session hijacking en dat wil ik dus voorkomen.

Dus, welke stappen moet ik doorlopen om tot een redelijke beveiliging te komen. Dit zou ik dan graag willen horen in woorden (code mag ook als je ijverig ben), bijv.

1: tabel met gebruikersnaam en wachtwoord waar wachtwoord een md5 wachtwoord is
2. sessie aanmaken en opslaan in een database tabel
3. etc....
4. etc....


Dan kom ik bij mijn volgende vraag. Ik las ook het 1 en ander over sessies opslaan in een database tabel. hoe gaat dit in zijn werk. Hoe kan ik dit het beste aanpakken, en waar moet ik op letten. Hoe ga je overweg met sessies opslaan in een database als je ook cookies gebruik. Wat stop ik in zo'n sessie en wanneer kan ik hem weggooien en hoe weet ik dat ik de sessie kan weggooien.

Zoals je begrijp ben ik nog steeds een beginner, maar ik wil graag begrijpen hoe een redelijk beveiligde website in elkaar zit, ZONDER simpelweg een standaard scriptje te gebruiken, ik wil het graag zelf maken en leren. Ik begrijp ook dat dit een hoop vragen zijn achter elkaar, ik heb gewoon even getypt wat in mij op kwam.
Zet gewoon een record in je database, een session met userid, en check dan op elke pagina.
@ Arjan : Perfect verwoord voor mij!!! Waar een treinreis al niet goed voor is <|:-0)
En hoe werkt dit als je op meerdere locaties wilt kunnen inloggen? (Ik begon te denken aan de hand van de post van Kasper.)

Voeg je dan gewoon een nieuwe sessie toe in de sessies tabel?
Nice @ arjan,

Veel dingen, mag je van mij een heele tutorial over schrijven! :P

Maar hoe check jij na elke f5? Javapoep?
Robin -> Je controleert op elke pagina van het forum (natuurlijk bouw je het zo op dat je eigenlijk altijd in je index.php file werkt van het forum :P) Dus eigenlijk alleen in je index.php zit de check (in PHP) ingebouwd.

Checken met JavaScript zal Arjan nooit doen (hem zo een beetje kennende van zijn reacties hier) JavaScript is uit te schakelen en door een bezoeker te lezen. Dan geef je meteen al te veel informatie prijs en mogelijkheden voor bezoekers :)



@Arjan

Je kunt de cookie ook een hash van het ip als naam geven. De hash zal voor "kwaadwillenden" minder bekend overkomen dan een ip adres. :)
Beste hash ever:

Md5 sha1 en nog een eigen hash! :P en nog een base64 als je je verveelt.
@Robin

Waarom md5 en SHA1? -> Ook dat is als iemand echt wil wel te kraken. Je moet het niet erger maken dan echt nodig is. -> Laat iemand maar een SHA1 code bruteforcen waarin je je eigen hash (uiteraard ook met speciale tekens) toe hebt gevoegd.
Dat kost al een behoorlijke tijd, als je string in totaal meer dan 8 tekens beslaat. (de string die door de sha1 hash generator gaat)

Reageren