Hoe programmeer jij?
Hallo, ik twijfel soms over de manier hoe ik iets aanpak.
Bijvoorbeeld:
Je gaat in een database een tabel maken waar later de gebruikers in komen te staan van je login systeem.
Zou je nou een aparte tabel maken voor bijvoorbeeld de geblokkeerde gebruikers, met (natuurlijk) een id, de datum van de start van de blokkade, de berekende datum van het einde van de blokkade, de reden, de gebruikersnaam.
Dan komen al dingen waar ik soms over twijfel: zou ik naast het gewone id van de rij, ook nog het id van de gebruiker erbij opslaan?
Zou ik uberhaupt een aparte tabel hiervoor maken, en niet gewoon aparte kolommen maken in de gebruikers tabel?
Zou ik de datum van de afloop van de blokkade al vooraf berekenen en opslaan, of gewoon de startdatum opslaan en bij elke login d.m.v de startdatum de einddatum berekenen?
En dan nog bijvoorbeeld dit:
Ik wil controleren of iemand is ingelogd en of dus de pagina mag worden geladen.
Wat doe ik als eerste?
- De sessie controleren
- Controleren of in de database staat of de gebruikersnaam/id wat in de sessie staat, is ingelogd.
- Controleren of het IP-adres hetzelfde is als in de database staat, en in de sessie
- Controleren of er niet 2 of meerdere rijen in de database tabel met sessies staan.
En wat zou ik bijvoorbeeld doen, of aan de gebruiker laten zien als er iets niet goed is?
Stel dat het IP niet hetzelfde meer is als in de sessie of in de database, dan is het toch normaal als deze gebruiker wordt uitgelogd? of moet ik juist de sessie en de database updaten?
En als de gebruiker is uitgelogd, welke melding moet ik dan geven?
"Je werd uitgelogd vanwege een fout, je kunt opnieuw inloggen" of zo iets?
Hoe doen jullie het / zouden jullie het doen?
Bijvoorbeeld:
Je gaat in een database een tabel maken waar later de gebruikers in komen te staan van je login systeem.
Zou je nou een aparte tabel maken voor bijvoorbeeld de geblokkeerde gebruikers, met (natuurlijk) een id, de datum van de start van de blokkade, de berekende datum van het einde van de blokkade, de reden, de gebruikersnaam.
Dan komen al dingen waar ik soms over twijfel: zou ik naast het gewone id van de rij, ook nog het id van de gebruiker erbij opslaan?
Zou ik uberhaupt een aparte tabel hiervoor maken, en niet gewoon aparte kolommen maken in de gebruikers tabel?
Zou ik de datum van de afloop van de blokkade al vooraf berekenen en opslaan, of gewoon de startdatum opslaan en bij elke login d.m.v de startdatum de einddatum berekenen?
En dan nog bijvoorbeeld dit:
Ik wil controleren of iemand is ingelogd en of dus de pagina mag worden geladen.
Wat doe ik als eerste?
- De sessie controleren
- Controleren of in de database staat of de gebruikersnaam/id wat in de sessie staat, is ingelogd.
- Controleren of het IP-adres hetzelfde is als in de database staat, en in de sessie
- Controleren of er niet 2 of meerdere rijen in de database tabel met sessies staan.
En wat zou ik bijvoorbeeld doen, of aan de gebruiker laten zien als er iets niet goed is?
Stel dat het IP niet hetzelfde meer is als in de sessie of in de database, dan is het toch normaal als deze gebruiker wordt uitgelogd? of moet ik juist de sessie en de database updaten?
En als de gebruiker is uitgelogd, welke melding moet ik dan geven?
"Je werd uitgelogd vanwege een fout, je kunt opnieuw inloggen" of zo iets?
Hoe doen jullie het / zouden jullie het doen?
Gewijzigd op 23/11/2012 17:27:46 door Mark Hogeveen
waarom zou je op ip controleren?
Stel iemand logt in via een mobiel netwerk, dan moet hij vaak opnieuw inloggen, want die ip's veranderen vaak.
een login is niet meer of minder dan een match tussen username en password, klopt die maak je een session aan. Zo niet dan is het fout .
Verder controleer je op iedere beveiligde pagina of de session bestaat.
ook snap ik niet waarom je apparte id voor een user zou willen. een uniek id wat tijdens het registreren word aangemaakt is voldoende.
Stel iemand logt in via een mobiel netwerk, dan moet hij vaak opnieuw inloggen, want die ip's veranderen vaak.
een login is niet meer of minder dan een match tussen username en password, klopt die maak je een session aan. Zo niet dan is het fout .
Verder controleer je op iedere beveiligde pagina of de session bestaat.
ook snap ik niet waarom je apparte id voor een user zou willen. een uniek id wat tijdens het registreren word aangemaakt is voldoende.
Tabel geblokkeerde gebruikers: alleen wanneer je van elke gebruiker de blokkade periodes wilt onthouden (waarom?) dan maak je een aparte tabel met blokkades en als user-identificatie van neem je bij de blokkade het id op uit de usertabel. Zo heb je een relatie en krijg je een tabel met oude en recente blokkades van 1 user. Hier komt dan ook weer wat programmeerwerk bij kijken als je wilt weten op de user nu een blokkade heeft. Noteer je altijd maar 1 blokkade, de recente dan kan je het gewoon bij de user zelf in de tabel opnemen. Het is een kweste vana datamodellering en daarover hoeft geen twijfel te bestaan, daar zijn regels voor. Normaliseren heet dit.
Het opslaan van het ipnummer heeft alleen belang voor de lopende sessie maar kan ook tot fouten leiden. Sommige smartphone systemen hebben voor elke webcall een ander/nieuw ipnummer, zinloos dus om met ipnummers te werken. Alles gewoon op username/password programmeren. Je kan het ipnummer opslaan ter informatie maar het wordt steeds minder zinvol om er controle en beveiliging aan te hangen.
Het opslaan van het ipnummer heeft alleen belang voor de lopende sessie maar kan ook tot fouten leiden. Sommige smartphone systemen hebben voor elke webcall een ander/nieuw ipnummer, zinloos dus om met ipnummers te werken. Alles gewoon op username/password programmeren. Je kan het ipnummer opslaan ter informatie maar het wordt steeds minder zinvol om er controle en beveiliging aan te hangen.
Gewijzigd op 23/11/2012 22:12:52 door Aad B
Wat betreft de indeling van je tabellen en kolommen, daar zijn zoals Aad B al zegt, inderdaad regels voor.
IP-nummer is toch wel handig om te gebruiken ivm cookie-hijacking. Als ik de cookie van een ingelogde gebruiker jat kan ik dmv die cookie inloggen op de site als er geen controle op ip-adres is.
Ik doe zelf het volgende (vast ook nog wel voor verbetering vatbaar):
- checken op sessie -> als juiste sessie -> klaar!
- geen juiste sessie? checken op cookie -> als geldige cookie en user komt voor in database met juiste ip-adres -> klaar!
ook geen juiste cookie? -> inlogscherm tonen.
Ik zou geen controle doen op 2 of meer rijen in de sessie-tabel:
Als ik vanuit huis en vanaf het werk inlog op een site wil ik op beide lokaties ingelogd blijven. Doordat deze beide lokaties een ander ip-adres hebben krijg je dan altijd meerdere regels in de tabel.
Het is natuurlijk wel aan te raden om de tabel eens in de zoveel tijd op te ruimen.
IP-nummer is toch wel handig om te gebruiken ivm cookie-hijacking. Als ik de cookie van een ingelogde gebruiker jat kan ik dmv die cookie inloggen op de site als er geen controle op ip-adres is.
Ik doe zelf het volgende (vast ook nog wel voor verbetering vatbaar):
- checken op sessie -> als juiste sessie -> klaar!
- geen juiste sessie? checken op cookie -> als geldige cookie en user komt voor in database met juiste ip-adres -> klaar!
ook geen juiste cookie? -> inlogscherm tonen.
Ik zou geen controle doen op 2 of meer rijen in de sessie-tabel:
Als ik vanuit huis en vanaf het werk inlog op een site wil ik op beide lokaties ingelogd blijven. Doordat deze beide lokaties een ander ip-adres hebben krijg je dan altijd meerdere regels in de tabel.
Het is natuurlijk wel aan te raden om de tabel eens in de zoveel tijd op te ruimen.
Gewijzigd op 23/11/2012 22:31:20 door Frits Katoen




