session timeout

Overzicht

Sponsored by: Vacatures door Monsterboard

Gezocht: .Net ontwikkelaars met een maatschappelij

Bedrijfsomschrijving Zoek jij als medior .Net ontwikkelaar een inspirerende werkplek bij een bedrijf met maatschappelijk verantwoordelijkheidsgevoel? Dan is deze vacature je op het lijf geschreven. De organisatie bestaat ruim 20 jaar en ze ontwikkelen in house applicaties waarmee de zorgsector enorm mee gebaat is. Jouw applicaties worden gebruikt door duizenden gebruikers waardoor je echt een waardevolle bijdrage kan leveren aan de maatschappij. Het bedrijf is zeer innovatief en vindt een goede werk/privé balans belangrijk. Je krijgt alle mogelijkheden om jezelf verder te ontwikkelen, je werktijden in te delen en daarnaast is het ook mogelijk om deels thuis te werken. Het

Bekijk vacature »

C#.NET-developer - JUNIOR

Functie omschrijving Voor een leuke opdrachtgever in omgeving Brielle zijn wij op zoek naar een junior developer. Werk jij graag met de volgende tools & technieken? C#, .NET, ASP.NET, MVC en SQL? Kijk dan snel of dit iets voor jou is! Als programmeur bij een productiebedrijf zal je voornamelijk nieuwe software schrijven maar ook bestaande software verbeteren. Verder werk je veel samen in back end projecten met leuke collega's. Bedrijfsprofiel Met een team van ruim 130 personen staan ze elke dag weer klaar om IT en Business te combineren door het ontwikkelen van producten op maat. Er zijn 3 teams,

Bekijk vacature »

Front-end developer (HTML, CSS, SASS, JavaScript)

Functie Momenteel zijn we voor ons Digital team op zoek naar een (medior) Front-end developer. Samen met je collega’s werk je in een Agile/Scrum omgeving aan de ontwikkeling van onze webapplicaties, websites en andere oplossingen. Je draagt bij aan een sterk ontwikkelproces waarin kwaliteit voorop staat. Hiervoor ben je niet alleen bezig met eigen code maar ook code reviews van andere collega’s. Ben jij graag op de hoogte van de nieuwste ontwikkelingen in je vakgebied en wil je deze toepassen voor diverse projecten? Dan komen wij graag met je in contact! Eisen • HBO werk- en denkniveau • Minimaal 2

Bekijk vacature »

Back-end Developer C#

Functie omschrijving We are looking for a dutch native speaker Ben jij een ervaren back-end developer, die graag in een in-house functie wil werken? Passen de woorden innovatie, programmeren en teamspeler bij jou? Zoek niet verder en lees snel verder. Voor een echt familiebedrijf in de regio van Uden ben ik op zoek naar een back-end developer, die met name kennis heeft van C# en .NET. Jij gaat de interne applicaties verder optimaliseren en nieuwe features ontwikkelen. Verder ga je de volgende werkzaamheden uitvoeren: Ondersteunen gebruikers; Uitvoeren van analyses van de software/applicaties; Maken van functionele ontwerpen en deze door vertalen

Bekijk vacature »

.NET Developer

Functie omschrijving Jij gaat in de functie van Software Developer werken met C# en .NET framework. Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met back-end development. Verder staat dit

Bekijk vacature »

Lead developer (PHP, Symfony, DDD)

Functie Als Lead developer zorg je ervoor dat het team (bestaande uit zowel junior als ervaren developers) in staat is om de kwaliteit van de software (en code) verder te verhogen. In samenwerking met het team, de product owner en de andere lead developers zet je technische lijnen uit en bepaal je de prioriteiten per sprint. Lijkt het jou interessant om complexe problemen op te lossen en bijvoorbeeld een nieuwe applicatiestructuur in Symfony op te zetten? Dan komen wij graag met je in contact. Eisen • HBO werk- en denkniveau (ze kijken niet naar papieren, maar naar denkniveau, motivatie en

Bekijk vacature »

Starter/junior Magento developer gezocht!

Functie Je komt te werken in een zelfsturend team waarin vertrouwen voorop staat en inbreng en ideeën worden gewaardeerd. Ook staat innovatie centraal. Ze bieden jou de mogelijkheid om jezelf door te ontwikkelen. Denk hierbij aan cursussen en een persoonlijk ontwikkelplan. Je komt terecht in het team van momenteel 4 (ervaren) collega’s en zal meewerken aan de doorontwikkeling en nieuwbouw van de Magento platformen van meerdere opdrachtgevers volgens Agile/Scrum. Denk hierbij aan nieuwe functionaliteiten, UX en koppelingen met verschillende back-end systemen. Als starter/junior developer zul je direct begeleid worden door een senior uit het team. Het is van belang dat

Bekijk vacature »

Fullstack developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een andere uitdaging? Voor een erkende werkgever in de omgeving van Breda zijn wij op zoek naar een Fullstack developer. Kennis of ervaring met C# & SQL is een must! Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten; Je bent verantwoordelijk voor de beheer en ontwikkeling van de software; Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je brengt de aanpassingssuggesties van klanten in

Bekijk vacature »

Ervaren PHP ontwikkelaar

Functie Jij als PHP ontwikkelaar komt te werken in een team van 4 andere PHP ontwikkelaars. Je zult je voornamelijk bezig houden met: – Het ontwikkelen van nieuwe features – Doorontwikkelen van de API – Nadenken over de technische infrastructuur – Datakwaliteit Samen met het team ben jij verantwoordelijk voor de verdere ontwikkeling van de software en om de positie als marktleider in Europa te behouden. Ze werken volgens SCRUM in 2 wekelijkse sprints, werken met Jira voor alle tickets en communiceren veel via Slack. Eisen • Minimaal 3 jaar ervaring als back end developer • Je hebt affiniteit met

Bekijk vacature »

.NET developer

Functie Jij begint als .NET ontwikkelaar in een team met 10 andere Software Engineers. De werkzaamheden zijn afwisselend, zo kan het dat jij bezig bent met volledig nieuwe features of het door ontwikkelen van bestaande sites of shops. Wij ontwikkelen web applicaties, maar ook mobiele applicaties. Daarnaast bijt jij je soms ook van in externe koppelingen met systemen zoals een ERP. Als team is er een duidelijke focus m.b.t. het waarborgen van de performance en snelheid van webshops. Ook zijn wij expert op het gebied van configuratoren. Kortom enorm veel afwisselende werkzaamheden! Ook jouw werkplek kan afwisselend zijn. Soms heb

Bekijk vacature »

Junior Front-End Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale oplossingen van Coolblue. Wat doe je als Junior Front-End Developer bij Coolblue? Als Junior Front-End Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen. Op dat moment komt je wil om te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te maken. Je sterk analytisch vermogen komt dan goed van pas! Ook Junior Front-End Developer worden bij Coolblue?

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

C# Developer Research and Development - Delft

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Delft Vacature ID: 6307 Introductie C# Developer Research and Development - Delft - Onze klant is één van de meest innovatieve bedrijven in de region van Delft. Op dit moment zijn ze voor het innovatie centrum. In het innovatie centrum wordt gewerkt aan de nieuwste technieken voor navigatie software. R&D / C# / Pattern Recognition / Algorithms / 3d Data / DotNET Functieomschrijving Als C# Developer kom je te werken in een innovatief scrumteam. We ontwikkelen en door ontwikkelen de nieuwste technieken op het gebied van navigatie software. Deze software wordt onder andere

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Senior Node.js developer Digital Agency

Functie Door de groei van de organisatie zijn ze op zoek naar een Tech Lead. Als tech lead ben jij verantwoordelijk Als Back end Node.js developer kom je terecht in een van de 8 multidisciplinaire teams in het projectenhuis. Afhankelijk van jouw interesses, wensen en capaciteiten word je bij projecten en onderwerpen naar keuze betrokken. Als ervaren ontwikkelaar zul jij vaak leiding nemen in de projecten en in het team een aanvoerder zijn van technische discussies. Uiteindelijk wil jij natuurlijk de klantwensen zo goed mogelijk vertalen naar robuuste code. De projecten kunnen varieren van langlopende- tot kleinschalige trajecten. Voorheen werkte

Bekijk vacature »

Pagina: 1 2 volgende »

Ozzie PHP

Ozzie PHP

27/05/2016 21:02:35
Anchor link
Hoewel er niet echt een goed of fout is, ben ik benieuwd op welke waarde jullie je session timeout hebben staan. De default is 1440 seconden (24 minuten). Toch kan dat lijkt me in sommige situatie te kort zijn. Bijv. als je in de backend van de website een uitgebreid redactioneel artikel aan het schrijven bent. Dat kan best langer duren dan die 24 minuten. Als je dan na bijv. 40 minuten je artikel wil opslaan is je sessie verlopen ... oeps.

Maak je de sessie timeout-duur te lang, bijv. 2 uur, dan vergroot je (theoretisch gezien) de kans dat een sessie wordt gekaapt.

Dus wat is wijsheid? Wat is een goede session timeout-duur?
 
PHP hulp

PHP hulp

25/12/2024 21:33:38
 
Thomas van den Heuvel

Thomas van den Heuvel

27/05/2016 21:33:50
Anchor link
Quote:
Maak je de sessie timeout-duur te lang, bijv. 2 uur, dan vergroot je (theoretisch gezien) de kans dat een sessie wordt gekaapt.

Toch alleen als je beveiliging ontoereikend is.

Zoals ik al eerder heb aangegeven, in plaats van het krampachtig proberen je sessies in leven te houden kun je beter inzetten op een strategie waarbij het niet uitmaakt dat deze (veelvuldig) verlopen en weer (veelvuldig) naadloos vervolg worden (onder water geherstart worden) zonder dat dit je applicatie/workflow/whatever breekt.
 
Ward van der Put
Moderator

Ward van der Put

27/05/2016 22:14:00
Anchor link
Gebruikelijke time-outs zijn 15 tot 30 minuten voor applicaties met een laag risico en 2 tot 5 minuten voor applicaties met een hoog risico.
Gewijzigd op 11/06/2016 18:09:49 door Bas IJzelendoorn
 
Ozzie PHP

Ozzie PHP

27/05/2016 23:58:33
Anchor link
@Thomas

Ik snap niet helemaal wat je bedoelt. Eenmaal verlopen is verlopen, dus dan kun je niet onderwater herstarten. Er zal op dat moment een nieuwe sessie worden gestart en alle sessie-data is dus foetsie. Wat ik bedoel te zeggen is ... soms wil je niet dat een sessie (te) snel verloopt. Stel iemand heeft spullen in z'n winkelmand gegooid en gaat even een blokje om lopen. Komt een half uur later terug. Klikt op z'n winkelmandje om af te rekenen, maar in de tussentijd is de sessie verlopen. Mogelijk gevolg, klant raakt gefrustreerd en sluit de browser af. Koop gaat niet door. Tegelijkertijd ... de back-end van een website wil je weer niet té lang hebben open staan. De vraag is dus of er een soort "balans" is. Ik lees ook websites waar ze pas na 24 uur een timeout doen. Zo'n sessie blijft dus een hele dag lang geldig. Als tegengeluid hoor je hier dan weer dat je moet oppassen voor session hijacking. Hoewel je daar het een en andere tegen kunt doen, is het wel een reëel risico. Hoe reëel? Geen idee ... daarom ben ik dus benieuwd naar ervaringen / best practices.

@Ward

>> Je opent de laatste tijd voortdurend vragen over het configureren van een VPS

Waar in de richtlijnen van dit forum staat dat dit niet mag? Iedereen is vrij om vragen te stellen en iedereen is vrij om die te beantwoorden (of niet). Volgens mij is dit forum bedoeld om elkaar te ondersteunen en helpen. Het inrichten van een server beslaat veel meer facetten dan enkele php.ini instellingen waar ik graag even over wil sparren.

Ik vind jouw reactie in deze een beetje vreemd en ook onverwachts. Liever had ik dan nog gehad dat je me een persoonlijk berichtje had gestuurd. Maar goed, als jij dit topic graag wil dichtgooien ... go ahead.
 
Ben van Velzen

Ben van Velzen

28/05/2016 00:29:41
Anchor link
Ik moet het hierin met Ozzie eens zijn dat een forum bedoeld is om vragen te stellen. Nu is dit topic niet zo zinnig aanvoelt als sommige anderen, maar ook de PHP configuraties bestaat uit veel nuances en individuele situaties.

Daarbij snap ik waar Thomas op doelt, je kunt je sessies combineren met andere methoden, bijvoorbeeld een cookie met een token oid, op welke basis je sessies kunt opbouwen/hervatten mbv gegevens die je al hebt. Ik heb zelf eerder gespeeld met een database session handler die in plaats van data verwijderen de data als inactief meldde, en na X periode uiteindelijk de zaak schoonveegde. Als je hier een token aanhangt kun je blijven hervatten zo vaak als je wilt.
 
Ozzie PHP

Ozzie PHP

28/05/2016 00:38:58
Anchor link
Ben, thanks voor je reactie. Er zit iets raars/dubbelzinnig in het sessie-systeem. Van de ene kant wil je het een gebruiker zo makkelijk mogelijk maken: je wilt in feite niet dat een gebruiker telkens opnieuw moet inloggen of z'n gegevens moet invullen. Als ie 's ochtends z'n winkelmandje vult, wil je bij wijze van dat ie 's avonds nog steeds op "afrekenen" kan drukken. In het geval het enkel om een winkelmandje gaat en er geen persoonlijke gegevens zijn ingevuld zou dit nog niet eens erg zijn ook. Sterker nog, als er wel persoonlijke gegevens zijn ingevuld zou het ook nog niet erg zijn ... pas als er sprake is van een "afgeschermde omgeving" waar je eerst moet inloggen, wordt het tricky.

In een back-end zou je bijv. kunnen kiezen dat een sessie 20 min. openstaat ... maar achter de schermen kun je ervoor zorgen dat de daadwerkelijk timeout langer duurt, bijv. een uur. Als de gebruiker 20 minuten lang niks doet, kun je bij de eerstvolgende request vragen om het wachtwoord. Als dat klopt, dan kun je de sessie weer vrijgeven, en als het niet klopt dan kun je de sessie-data vernietigen. Gevolg is dan wel dat als een gebruiker inlogt en een uur lang niks doet, het sessie-bestand op de achtergrond een uur lang "actief" is en pas na dat uur als inactief wordt bestempeld. Vergroot dit het risico op session-hijacking?
 
Ben van Velzen

Ben van Velzen

28/05/2016 01:44:01
Anchor link
Daarnaast geldt dat je te maken hebt met de GC timings binnen PHP, de timeout is daarmee niet alles dat meetelt. Na de timeout gaat de collector aan de slag, en het kan gebeuren dat een sessie pas uren later werkelijk verwijderd wordt.

De manier die je schetst kan een uitkomst bieden, bij verloop van de sessie om een wachtwoord vragen. Dit vereist tegelijk wel dat je in een cookie bijhoudt om welke gebruiker het gaat. Als je een session cookie gebruikt (timeout 0) is dit geen enkel punt, bij het sluiten van de browser gaat dit cookie verloren.

Op het punt van hijacking: session hijacking kan voorkomen wanneer je onveilig met de data omgaat. Net als dat je niet wilt dat URLs van het backend bekend worden. Hier zijn uiteraard oplossingen voor, zoals een tussenliggende pagina op een neutrale locatie, die mbv bijvoorbeeld een Refresh header de uiteindelijke URL opvraagt, dan is de Referer header tenminste leeg. Verder is het zaak om gewoon te voorkomen dat men toegang krijgt tot de session id, en een eenvoudige oplossing is session.use_only_cookies aan te zetten, waardoor er geen session id's in urls gestopt worden. Uiteraard kun je per sessie de parameters instellen met o.a. session_set_cookie_params
 
Ozzie PHP

Ozzie PHP

28/05/2016 02:02:59
Anchor link
>> Daarnaast geldt dat je te maken hebt met de GC timings binnen PHP, de timeout is daarmee niet alles dat meetelt. Na de timeout gaat de collector aan de slag, en het kan gebeuren dat een sessie pas uren later werkelijk verwijderd wordt.

Ja inderdaad ... de sessie blijft nog even aanwezig totdat de GC in actie komt. Ook weer zo'n leuke. Die kun je heel "strak" afstellen, zodat ie bij ieder request wordt getriggerd, maar dat is dan weer niet lekker voor de performance ... althans dat stelt men. De default session.gc_divisor in mijn php.ini stond maar liefst op 1000 en session.gc_probability op 0! Waarschijnlijk probeert mijn hostingboer op deze manier om zo min mogelijk processorkracht te verbruiken. Maar die GC komt dan dus nooit in actie :-s

>> Dit vereist tegelijk wel dat je in een cookie bijhoudt

Dat gaat toch als het goed is automatisch als je een sessie-start. In de sessie zelf moet ik dan een "last_active_time" of iets dergelijks opnemen, die ik dan vergelijk met de huidige tijd.

>> Hier zijn uiteraard oplossingen voor, zoals een tussenliggende pagina op een neutrale locatie ...

Ik volg niet helemaal wat je hiermee bedoelt. Wat voor pagina bedoel je, en waarom moet de referer leeg zijn? Wie kan daar iets mee?

>> Verder is het zaak om gewoon te voorkomen dat men toegang krijgt tot de session id, en een eenvoudige oplossing is session.use_only_cookies aan te zetten ...

Dat klopt. Dat heb ik gedaan, maar dan nog kan men toch een cookie spoofen met telkens een andere session-id? Wel een hoop werk en weinig kans van slagen .. maar de mogelijkheid is er wel lijkt me.
 
Ben van Velzen

Ben van Velzen

28/05/2016 11:25:01
Anchor link
>> Dat klopt. Dat heb ik gedaan, maar dan nog kan men toch een cookie spoofen met telkens een andere session-id? Wel een hoop werk en weinig kans van slagen .. maar de mogelijkheid is er wel lijkt me.

De mogelijkheid is er wel, maar dat zal volgens hetzelfde stramien (en dus hetzelfde tempo) gaan als het raden van een wachtwoord. Hoe lang gaat het duren om de juiste string te raden uit 63^27 mogelijkheden?

>> De default session.gc_divisor in mijn php.ini stond maar liefst op 1000 en session.gc_probability op 0! Waarschijnlijk probeert mijn hostingboer op deze manier om zo min mogelijk processorkracht te verbruiken. Maar die GC komt dan dus nooit in actie :-s

Ik weet dat op Debian standaard de gc_probability op 0 staat, en met cronjob verouderde session bestanden worden weggegooid. Mogelijk speelt bij jou iets soortgelijks.

>> Dat gaat toch als het goed is automatisch als je een sessie-start. In de sessie zelf moet ik dan een "last_active_time" of iets dergelijks opnemen, die ik dan vergelijk met de huidige tijd.

Als je sessie vernietigd wordt door een timeout lijkt het me niet dat je nog bij de gegevens in de sessie kan, dus je zult dit apart moeten opslaan van je sessie.

>> Ik volg niet helemaal wat je hiermee bedoelt. Wat voor pagina bedoel je, en waarom moet de referer leeg zijn? Wie kan daar iets mee?

Het zou niet de eerste keer zijn dat ik zie dat een aanval getriggerd wordt door een ongelukkige link naar een externe partij, die bij het ontdekken van de URLs naar een backoffice vol aan de slag ging. Hoe beter je je backend verborgen kunt houden, hoe veiliger het blijft. Dit is uiteraard iets dat naast de beveiliging speelt, maar als niemand weet waar hij moet zijn om je backend te benaderen loopt het risico ook enorm terug.
 
Ozzie PHP

Ozzie PHP

28/05/2016 14:36:26
Anchor link
>> Hoe lang gaat het duren om de juiste string te raden uit 63^27 mogelijkheden?

Eens, maar als je een sessie pas na 24 uur een time-out geeft, dan heeft men dus wel een dag de tijd om te 'raden'.

>> Ik weet dat op Debian standaard de gc_probability op 0 staat, en met cronjob verouderde session bestanden worden weggegooid. Mogelijk speelt bij jou iets soortgelijks.

Oké, dat wist ik niet. Ik lees het hier nu inderdaad. Oplossing is inderdaad gewoon om de waarde te wijzigen.

>> Als je sessie vernietigd wordt door een timeout lijkt het me niet dat je nog bij de gegevens in de sessie kan, dus je zult dit apart moeten opslaan van je sessie.

Haha, ja da's inderdaad een goede ... dat gebeurt op het moment dat de sessie dus écht z'n limiet heeft bereikt. Bijv. de sessie timeout vindt na een uur plaats, maar na 20 min. inactiviteit maak je deze onbereikbaar voor de gebruiker (bijv. omdat die in de back-end aan het werk is). Voordat hij verder kan moet hij dan eerst z'n wachtwoord invoeren. Echter, doet hij een uur helemaal niks, dan is de sessie compleet verlopen en zal er een nieuwe sessie worden aangemaakt. Anders gezegd 'achter de schermen' bestaat de sessie een uur, maar na 20 min. inactiviteit moet een gebruiker eerst een wachtwoord invoeren om verder te kunnen. Gaat dat mis, dan kun je de sessie verwijderen/leegmaken.

En hier raken we dus de kern van mijn vraag ... wat is een goede duur voor de sessie timeout? Na hoeveel minuten COMPLETE inactiviteit moet je zeggen: oké, vanaf nu is deze sessie echt niet geldig meer. Daarbij spelen in principe 2 factoren van belang. 1. Je wil een gebruiker voldoende tijd geven om iets te kunnen doen. 2. Je wil een actieve sessie niet te lang 'in leven houden' om sessie-hijacking te voorkomen. Wat gebruik jij zelf meestal als session timeout?

>> ... maar als niemand weet waar hij moet zijn om je backend te benaderen loopt het risico ook enorm terug.

Dat is zeker waar. Goed punt inderdaad.

PS Weet jij trouwens of een verlopen sessiebestand nog benaderd kan worden? Stel een sessie krijgt na een half uur een timeout, maar wordt pas een paar uur later door de gc verwijderd. Kan in de tussentijd dan iemand die sessie nog benaderen door de session id te 'raden', of zegt het sessiebestand dan 'ik ben o niet meer geldig' en gebeurt er verder niks?
Gewijzigd op 28/05/2016 15:09:03 door Ozzie PHP
 
Thomas van den Heuvel

Thomas van den Heuvel

28/05/2016 16:38:04
Anchor link
Wederom lijk je één antwoord te willen op een (hypotethische) vraag die meerdere antwoorden heeft.

Mijn antwoord zou zijn: zou afhangen van de applicatie.

Maar ook: er zijn meerdere manieren om een probleem op te lossen, bijvoorbeeld door het wegnemen van het probleem zelf. In een oplossing waarbij het niet uitmaakt dat een sessie verloopt is het verlopen van een sessie geen probleem...

Het is maar net hoe ver je je catering voor (de domheid?) van een gebruiker wilt laten gaan. Ik ken weinig mensen die in een shopping-spree voor de aankoop nog even een wandeling gaan maken eigenlijk.

It is impossible to make anything idiot proof, because idiots tend to be ingenious.

Quote:
Net als dat je niet wilt dat URLs van het backend bekend worden.

Security through obscurity is zelden een goed ontwerpprincipe.
Quote:
Het zou niet de eerste keer zijn dat ik zie dat een aanval getriggerd wordt door een ongelukkige link naar een externe partij, die bij het ontdekken van de URLs naar een backoffice vol aan de slag ging.

Als ik het bovenstaande zo lees dan was de veiligheid van die applicatie(s) lang niet robuust genoeg. En wederom is dan een menselijke f*ckup de bron van alle ellende (maar je zou dus ook vraagtekens kunnen plaatsen bij de sterkte van security als je dmv een link een backend in kan duiken). Een systeem beveiligen met state-of-the-art shizzle heeft weinig zin als iemand het moeilijk te onthouden wachtwoord als post-it aan zijn/haar monitor plakt eh.

Om ten langen leste antwoord te geven op je generieke vraag, een generiek antwoord:
De default sessie-timeout is een goede sessie-timeout. Te meer omdat deze al naar gelang de situatie on-the-fly aangepast kan worden.
 
Ozzie PHP

Ozzie PHP

28/05/2016 16:54:12
Anchor link
>> In een oplossing waarbij het niet uitmaakt dat een sessie verloopt is het verlopen van een sessie geen probleem...

Dat is zeker waar. De vraag is alleen óf, en zo ja hoe je dit volledig kan dichttimmeren.

>> Te meer omdat deze al naar gelang de situatie on-the-fly aangepast kan worden.

Dit is natuurlijk ietsje te makkelijk ... veel instellingen kunnen on the fly worden aangepast. Betekent echter niet dat je daarom niet hoeft na te denken over een goede basisinstelling.

>> De default sessie-timeout is een goede sessie-timeout.

Oké ... maar leg mij dan eens uit waarom die default setting van 1440 seconden (ofwel 24 minuten) een goede setting is volgens jou? Waar baseer jij dat op? Ik kan je alvast verklappen dat die 1440 seconden per toeval de default zijn geworden, omdat de default van oudsher eigenlijk een dag was (1440 minuten). In de loop der jaren zijn die minuten ooit per ongeluk seconden geworden. Er zit dus niet een of andere gedachte achter die 24 minuten. Maar dan ben ik dus benieuwd waarom dit volgens jou exact de juiste setting is.
Gewijzigd op 28/05/2016 16:56:36 door Ozzie PHP
 
Thomas van den Heuvel

Thomas van den Heuvel

28/05/2016 17:13:33
Anchor link
De default instelling doet verder geen aannames over wat dat ook. Zie het als een initialisatie met een gedocumenteerde waarde. Deze standaard instellen op een andere waarde zonder dat je weet waarvoor deze gebruikt gaat worden is second guessing.

Toegegeven, het is naïef om er vanuit te gaan dat iets per definitie zijn default waarde heeft en het is altijd verstandig om dit te toetsen, maar ik vind het al helemaal takke-irritant als webhosters zelf denken slim te zijn en een heleboel waarden een eigen, en afwijkende, default te geven.

Assumption is the mother of all f*ckups, en ik kon mijzelf wel voor mijn kop slaan toen ik een poos geleden er achterkwam dat een host register_globals aan had staan, maar ik vroeg mij tegelijkertijd af wat de mentale gesteldheid van iemand is om dit zelf zo te configureren als de standaard al jaren "Off" is...
 
Ozzie PHP

Ozzie PHP

28/05/2016 22:08:49
Anchor link
Defaults worden inderdaad vaker zomaar aangepast ... maar bij mij staat de default voor de session timeout wel gewoon op 1440. Dus die is niet aangepast. Ik kan 'm wel zelf wijzigen ... maar de vraag is in hoeverre dat dus een risico met zich meebrengt. Stel dat ik de timeout instel op bijv. 3600 seconden (ofwel een uur) worden mijn websites dan gevoeliger voor session hijacking? Of is het verschil tussen 24 minuten versus een uur verwaarloosbaar in dat opzicht?
 
Ben van Velzen

Ben van Velzen

28/05/2016 22:55:24
Anchor link
In dat opzicht is het verwaarloosbaar. De risico's op hijacking worden ook zwaar overdreven. Het is uiteraard afhankelijk van de responsetijd van je applicatie, maar 63^27 is bijna een 4 met 48 nullen aan combinaties. In theorie kun je een keer geluk hebben en op een key als aaaaaaaaaaaaaaaaaaaaaaaaaaa tegenkomen, maar de kans daarop is 1 op de 63^27. Je beveiliging staat of valt niet met de sessieduur, maar de overige maatregelen. Op een forum als dit zou ik geen IP controle gebruiken, er is geen echt gevoelige informatie. Bij andere applicaties wel, of deels (bijvoorbeeld de eerste 3 octets). Vermoedelijk bestaat de session timeout ook alleen om sessies na verloop van tijd op te kunnen ruimen en heeft het geen ander doel. Hier heb ik geen harde data over, maar het voelt logischer dan iets anders.
 
Ozzie PHP

Ozzie PHP

28/05/2016 22:59:13
Anchor link
Oké, thanks. Gebruik jij zelf ook een langere timeout-duur, of gebruik je de default?
 
Ben van Velzen

Ben van Velzen

28/05/2016 23:17:46
Anchor link
Ik gebruik gewoon de default. Afhankelijk van de applicatie gaat dat gepaard met overige maatregelen, zoals bijvoorbeeld automatisch verlengen mbv ajax requests, IP controles etc. Ik moet er ook bij zeggen dat ik eigenlijk altijd een database session handler gebruik omdat dit wat meer controle geeft over het verloop etc. Het maakt het een stuk eenvoudiger om verdachte sessions te detecteren, en in het geval van een snel wisselend id vanaf 1 ip de toegang te blokkeren. Wat ik doe is niet eens heel relevant, het is per applicatie verschillend, per geval verschillend, het ligt net aan de eisen die je stelt (of die gesteld worden).
Gewijzigd op 28/05/2016 23:20:24 door Ben van Velzen
 
Ozzie PHP

Ozzie PHP

28/05/2016 23:23:58
Anchor link
>> een database session handler

Wat bedoel je daarmee? Dat je geen "fysieke" sessiebestanden hebt, maar dat je alle sessiedata in de database opslaat? Of begrijp ik je nu verkeerd?
 
Ben van Velzen

Ben van Velzen

28/05/2016 23:37:05
Anchor link
Dat bedoel ik inderdaad.
 
Ozzie PHP

Ozzie PHP

29/05/2016 00:10:57
Anchor link
Ah oké ... geinig :-)
 
Ben van Velzen

Ben van Velzen

29/05/2016 00:20:08
Anchor link
Voorbeelden genoeg, er is een topic van eerder vandaag waarin zo'n handler staat. Nu zou ik hem anders opbouwen, maar de strekking van het gebruik van session_set_save_handler is hetzelfde. Je maakt een functie voor het lezen van je sessie, het openen, sluiten etc, en niet onbelangrijk: de gc handler. Je kunt hierdoor veel invloed uitoefenen vanuit je handlers met je implementatie. Het heeft als bijkomend voordeel dat je de sessies centraal kunt weergeven/stoppen etc. Je kunt gebruikers hiermee dus ook controle geven over hun lopende sessies.
 

Pagina: 1 2 volgende »

 

Dit topic is gesloten.



Overzicht

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.