Ik gebruik bij de inlogprocedure en wijzigingen een vast gecodeerde session code, en een variabele code.
Bij het zoeken naar gegevens van lid gebruik ik nu de voorhanden zijnde gegevens
als Username, Email, enz.
Ik zou natuurlijk ook de gegevens van de session kunnen gebruiken.
De vaste session code bevat een uniek gegeven van een lid.
Omdat die session is gecodeerd moet ik het eerst omzetten voor referentie.
Wat betreft scripting maakt dat niet veel uit.
Tenzij ik de vaste session waarde ongecodeerd erin zet (=lidnr).
Dan kan ik direct op fotonaam (=lidnr) zoeken voor alle gegevens.
Lijkt me niet zo veilig.
Hoe zoeken jullie de gegevens?
Hieronder een voorbeeldje:
Waarom gebruik je het e-mailadres (gecodeerd) niet als bestandsnaam? Bijvoorbeeld
$filename = md5(strtolower($email)) . 'jpg';
Dan hoef je maar 1 bestand te controleren bij het "inloggen" (sowieso eerst al controleren of ie bestaat), en vervolgens (na controleren wachtwoord) kun je de hele IPTC inhoud in de sessie kiepen om niet elke keer weer in die file te moeten duiken.
Ik heb ook aangegeven dat er meerdere mogelijkheden zijn.
Twijfelde alleen vanwege de veiligheid.
Maar ik denk dat ik de vaste waarde van de session ga gebruiken.
Met als extra check de variabele waarde.
Overigens loopt de sessie uitsluitend bij inloggen voor wijzigingen, etc.
De rest van de site is openbaar.
Dat komt er dan ongeveer zo uit te zien voor het ophalen:
(a) Je bepaalt zélf wat er in de sessie wordt opgeslagen. Je hoeft dus niet steeds te controleren of wat je zelf (!) in de sessie hebt opgeslagen nog overkomt met wat je zelf (!) in een plaatje hebt opgeslagen.
(b) Je slaat pas iets op in de sessie nádat je hebt gecontroleerd of het voldoende veilig is voor verdere consumptie van de sessie. Je gaat niet omgekeerd zomaar van alles opslaan in een sessie en daarna bij iedere consumptie controleren of wat er in de sessie zit wel oké is. Meestal althans.
(c) Sessies worden veilig opgeslagen op je eigen server op een locatie die niet extern toegankelijk is. Dáárvoor heb je dat gedoe met IPTC-data in JPEG-bestanden buiten de root allemaal niet nodig. Je gebruikt de JPEG's buiten de root nu deels voor functionaliteit waarin PHP-sessies en de bijbehorende sessiebestanden zelf al voorzien.
(c) Sessies worden veilig opgeslagen op je eigen server op een locatie die niet extern toegankelijk is.
Aha, dat triggerde iets in mijn geheugen. Topicstarter geeft aan dat het een gedeelde server was. Zou niet de eerste keer zijn dat iedereen schrijft in dezelfde sessie-directory :p.
Je kunt dan nog kathedralen van oplossingen bouwen (of die nou juist zijn of niet nog even in het midden gelaten :p), als je serverconfiguratie niet klopt ben je nog steeds nat.
>> Je kunt dan nog kathedralen van oplossingen bouwen (of die nou juist zijn of niet nog even in het midden gelaten :p), als je serverconfiguratie niet klopt ben je nog steeds nat.
Bovendien zal altijd de zwakste schakel in de ketting breken. Heb je prachtig geavanceerd inlog systeem maar een onveilige file upload (om maar iets te noemen) ga je ook nat.
Thomas, de sessies worden inderdaad opgeslagen in een gedeelde map.
Mijn hosting kan de sessions wel plaatsen in mijn eigen home directory buiten de root.
Dus kan ik dat doen. Bedankt, want had ik me niet gerealiseerd.
Moet ik dan de session values nog anders opvragen?
Nee, dat werkt verder hetzelfde. Gewoon zorgen dat je de sessie-directory altijd expliciet instelt (hierbij helpt het als je site een single-point-of-entry heeft, zoals bijvoorbeeld index.php, hoef je dit ook maar 1x in te stellen). Rest werkt zoals voorheen.
Ik heb een oud script helemaal omgebouwd. Is echt niks meer van over, dank zij jullie, haha.
Maar nog wel een paar opmerkingen omdat ik die stukjes nog over heb.
Is het gebruikelijk om na bewerking in een blok steeds een nieuwe set_session() te doen?
Ik zou denken: bij het inloggen de set_session. en start de session, en die loopt een bepaalde tijd door.
En bij de session_start(): begint de tijd dan weer opnieuw te lopen vanaf de start?
Wat zijn de gevolgen als je session verloopt tijdens een bewerking?
Bedankt overigens voor jullie geduld en reacties...
Als je sessie verlopen is, dan bestaat je sessie niet meer.
Dus ik hop dat je binnen in je toegangscontrole ook controleert of je $_SESSION['UserID'] bestaat.
Verder raad ik ook aan om NA een inlogactie dit uit te voeren, of zelfs vaker.
session_regenerate_id().
Daarmee maak je een nieuwe SessieID aan, en zo voorkom je dat een oude SessieID nog geldig is, die in handen zou kunnen komen van hackers.