session hijacking,, wat houdt dit in?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.Net ontwikkelaars voor de zorgsector

Bedrijfsomschrijving Voor onze klant in de omgeving van Zwolle zijn wij op zoek naar een ervaren .Net ontwikkelaar, bij voorkeur met ervaring binnen de belangrijkste sector van Nederland, namelijk: de zorgsector. Deze internationale organisatie ontwikkelt software voor de zorgsector. Er werken zo'n 25 medewerkers hard aan een oplossing die gebruikt wordt door heel Nederland. Er heerst een informele sfeer waarbij er altijd ruimte is voor een grapje. Je collega's zijn stuk voor stuk sterke ontwikkelaars vanuit verschillende achtergronden en met verschillende leeftijden. Je komt hier terecht in een organisatie die zich hard inzet om de zorgsector te verbeteren. De mogelijkheden

Bekijk vacature »

Software Developer

Functie omschrijving Psst hé jij daar! Op zoek naar een nieuwe uitdaging als developer? Wacht niet langer en reageer direct. In deze functie ga je bij een familiebedrijf werken als developer. Je gaat maatwerk software ontwikkelen met de Microsoft stack. Je gebruikt technieken als C#, ASP.NET en MVC. Je werkt in een leuk team van andere developers. Je krijgt veel vrijheid in je werk en kan flexibel werken. Dagje thuiswerken? Geen probleem! Daarnaast is er veel ruimte om écht mee te denken met het bedrijf en met de klanten. Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Vanaf

Bekijk vacature »

Anaplan Developer

Dit ga je doen What are you going to do: Picking up Stories: Design planning had, how are we going to build it in Anaplan; Talking to the end user to build a forecasting model; Having contact with the data team about which data is needed; Being able to convert an Excel sheet into a 3, 4 or 5 dimensional modeling environment; Giving knowledge sessions about Anaplan; Solving incidents; Making instructional videos on how teams should read forecasts; Writing blogs about forecasting. Hier ga je werken We are looking for an Anaplan Builder to deliver end-to-end solutions within a big

Bekijk vacature »

.NET developer

Functie As a .NET developer you start in a driven and diverse development team. Your team consists of 16 IT professionals, including 7 software engineers. Because your new employer is internationally active, there are also international IT professionals working in the IT department. As a result, the official language is English. As a team you are responsible for a new Cloud Native product. This product runs entirely in Azure with a Progress Database and various Azure Functions. In addition, this product has a JS front-end, a REST API system and a layer in C # .NET. The idea is therefore

Bekijk vacature »

Back end developer

Functie Jij als full stack ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor 90% van je tijd je bezig houden met het ontwikkelen van grote maatwerk applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. De technische uitdaging momenteel is dat

Bekijk vacature »

Als PHP developer bijdragen aan beter onderwijs?

Functie Momenteel zijn ze op zoek naar een PHP developer die mee gaat werken aan de (door)ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js en

Bekijk vacature »

.NET Developer

Dit ga je doen Binnen het team bouw je aan een applicatie met andere .Net Developers, testers een Product Owner en een Business Analyst. Met het team wordt de backlog besproken. In overleg claim jij jouw deel en zorgt ervoor dat onderhoud en innovatie wordt gerealiseerd. Het project dat momenteel draait is het opgraden van de omgeving. Doorontwikkelen van de huidige applicatie; Overleggen met teamleden om de backlog te verdelen; Onderhouden van de huidige omgeving; Sparren met de business en het ophalen van nieuwe requirements. Hier ga je werken De organisatie is een van de grootste landelijke aanbieder van diverse

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

Front-End Developer

Als Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Front-End Developer bij Coolblue? Als Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Je krijgt energie van het bedenken van creatieve oplossingen en presenteert dit graag binnen het team. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te

Bekijk vacature »

Senior Lead Front End Developer

Functieomschrijving Voor Stichting Waternet zijn wij op zoek naar een senior Lead Front End Developer. Binnen het DevOps team Online zijn we op zoek naar een Senior Lead Front End developer met kennis van toegankelijkheid. Deze developer zal zich bezighouden met development van webpaginas die in verbinding staan met systemen uit het back office. Taken Ontwerpen, ontwikkelen, implementeren, documenteren en beheren van webapplicaties in een Azure-omgeving Debuggen, analyseren en oplossen van problemen in de OTAPomgevingen Je participeert in het DevOpsTeam Online voor het verder uitwerken en implementeren van gebruikerswensen Je bent betrokken bij toegankelijkheid audits en het implementeren van WCAG

Bekijk vacature »

Java developer

Als Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en staan

Bekijk vacature »

Junior Java Developer

Dit ga je doen Full stack web- en appdevelopment; Vertalen van de functionele wensen naar de technische specificaties; Sturing geven aan/klank board zijn voor de software teams; Trainen van de software teams; Sparren met klanten; Meedenken over architectuur. Hier ga je werken De organisatie is een bureau welke websites en mobiele applicaties bouwt voor verschillende toonaangevende organisaties. Hierbij richten zij zich voornamelijk op de sectoren leisure, overheid en zorg. De sfeer intern kenmerkt zich door informaliteit, gezelligheid en ambitie. Ze werken dag in dag uit samen om mooie producten op te leveren voor hun klanten. Op dit moment zijn er

Bekijk vacature »

Front-end Developer - Juniorfunctie

Functie omschrijving Ben jij op zoek naar een uitdagende baan als front-end developer, in een informele werksfeer, waar jij echt het verschil kan maken? Wil jij graag werken voor een bedrijf dat sportiviteit en een open communicatie, hoog in het vaandel heeft staan? Dan hebben wij de perfecte vacature voor je! Voor een klein bedrijf in Rijen dat gespecialiseerd is in het omzetten van digitale woningtekeningen naar managementinformatie, zijn wij per direct op zoek naar een allround front-end developer. Jouw werkzaamheden zien er als volgt uit: Ja gaat nauw samenwerken met de back-end developer. De database structuur is volledig gebouwd

Bekijk vacature »

PHP Software Developer

Functie omschrijving Op zoek naar een nieuwe uitdaging binnen PHP? Lees dan snel verder! Wij zoeken een ervaren PHP developer die binnen een organisatie gaat functioneren als verlengstuk van de klant. Wij zoeken voor deze iemand die technisch complexe zaken met enthousiasme en plezier aanvliegt. Verder moet je instaat zijn om je tijd goed te managen omdat je aan meerdere projecten tegelijkertijd werkt. Je werkt met de nieuwste technieken en tijdens deze uitdaging werk je veel samen met de front-end developers van deze organisatie. Wij zoeken iemand die zichzelf graag uitdaagt en altijd de beste wilt zijn. Bedrijfsprofiel Waar ga

Bekijk vacature »

Front-end Developer vue.js node.js SaaS

Dit ga je doen Het ontwikkelen van nieuwe features die bijdragen aan de groei van de klanten van de organisatie; Je denkt mee over nieuwe innovaties, features en verbeteringen in de applicatiearchitectuur; Je draagt bij aan de continue ontwikkeling van jouw team doordat je elke dag streeft naar het verbeteren van jouw eigen prestaties; Je neemt actief deel aan Scrum meetings en de Frontend Guild. Hier ga je werken Voor een snel groeiend bedrijf de regio Nieuw Vennep zijn wij opzoek naar een ervaren Front-end Developer. De organisatie is actief in de e-commercebranche en ontzorgt haar klanten middels een SaaS-platform.

Bekijk vacature »

Pagina: « vorige 1 2 3 4 volgende »

Chris PHP

Chris PHP

08/10/2012 12:42:05
Quote Anchor link
@Mik,

Wat bodoel je precies met het id van je browser? Welk id heb je het dan over, je sessie-id? Voor zover ik weet geven browsers zelf geen uniek id hoor, waar jij met PHP gebruik van kunt maken
 
PHP hulp

PHP hulp

23/12/2024 00:25:44
 
Ward van der Put
Moderator

Ward van der Put

08/10/2012 12:42:57
Quote Anchor link
Ook zonder IP-adres kun je op allerlei manieren een sterke hash genereren. Ander voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// Geheime sleutel
define('SECRET_KEY', 'JHNIRxywSjFTKv5bsGjPchzxekuvdZuj2XvduLf');
/**
 * [a] Asymmetrische 512-bit hash met
 * [b] fingerprinting van de user agent die
 * [c] alleen vandaag geldig is voor
 * [d] applicaties die de geheime sleutel kennen en
 * [e] de strings b, c en d in de juiste volgorde toepassen.
 */
//              |--a---|  |------------b------------|   |----c----|   |---d----|

$hashkey = hash('sha512', $_SERVER['HTTP_USER_AGENT'] . date('Ymd') . SECRET_KEY);
//                        |---------------------------e------------------------|
?>
 
Chris PHP

Chris PHP

08/10/2012 12:46:10
Quote Anchor link
Ward,

De hash generen is geen probleem, de controle met de client is het euvel hier om hijacking tegen te gaan. Controle op IP werkt niet meer anno 2012.
 
Mik PHP

Mik PHP

08/10/2012 12:47:16
Quote Anchor link
@Chris,

Nee, ik dacht dat misschien de browser bepaalde unieke waardes meestuurt naar de client.

Maar helaas
 
Chris PHP

Chris PHP

08/10/2012 12:49:40
Quote Anchor link
Mik tH op 08/10/2012 12:47:16:
@Chris,

Nee, ik dacht dat misschien de browser bepaalde unieke waardes meestuurt naar de client.

Maar helaas


Nee helaas niet, dat zou het probleem gelijk oplossen :D vandaar dat er nu de functionele cookie voorgesteld wordt. Ik had het als idee, echter SanThe heeft het zelfs ooit al gemaakt en getest. Het was goed te doen, en werkte ook op mobiele apparaten.
 
Mik PHP

Mik PHP

08/10/2012 12:54:28
Quote Anchor link
Chris NVT op 08/10/2012 11:10:48:
Maar om even verder te gaan over het sessie hjack verhaal :D

Je kunt natuurlijk ook gewoon een 'functionele' cookie maken, waar je een random id in zet die aangemaakt wordt tijdens het inloggen. Dan kun je kijken of de sessie-id en dat random id (los van je sessie cookie) matchen.

Dit soort cookies mag je plaatsen, en kun je zien of het nog om het zelfde 'apparaat' gaat. Dan sla je beide op in je database tijdens het inloggen, en bij het uitloggen delete je de entry.


Ik snap niet 100% wat je hier mee bedoeld. Dit zijn even als voorbeeld de waardes:

Je session id = 1234
random id cookie = abc123CBA

Wat bedoel je nu precies met het verhaal hierboven.
 
Chris PHP

Chris PHP

08/10/2012 13:09:31
Quote Anchor link
Mik tH op 08/10/2012 12:54:28:
Chris NVT op 08/10/2012 11:10:48:
Maar om even verder te gaan over het sessie hjack verhaal :D

Je kunt natuurlijk ook gewoon een 'functionele' cookie maken, waar je een random id in zet die aangemaakt wordt tijdens het inloggen. Dan kun je kijken of de sessie-id en dat random id (los van je sessie cookie) matchen.

Dit soort cookies mag je plaatsen, en kun je zien of het nog om het zelfde 'apparaat' gaat. Dan sla je beide op in je database tijdens het inloggen, en bij het uitloggen delete je de entry.


Ik snap niet 100% wat je hier mee bedoeld. Dit zijn even als voorbeeld de waardes:

Je session id = 1234
random id cookie = abc123CBA

Wat bedoel je nu precies met het verhaal hierboven.


Als je een sessie aanmaakt krijg je een sessie-id, die sla je op in een database, tevens maak je tijdens het inloggen een cookie aan met een random id.

Dus bijvoorbeeld

Sessie id = 1234567890
Random id = OSIFDjk4POJD8903-2

Deze zet je beide in een database, samen met bijvoorbeeld het unieke id van de gebruiker.

Als je nu op een ‘beveiligde’ pagina komt, kijk je of de sessie-id en het random-id nog steeds gelijk zijn, dan tijdens het eerste inlog. Zoniet is de toegang geweigerd, is het wel zo dan gaat hij verder.

Bij het uiloggen, haal je die entry weer uit je database, aangezien je tijdens het inloggen weer een nieuw (ander) sessie-id en random-id krijgt, zolang er niet uitgelogd wordt.
 
Ward van der Put
Moderator

Ward van der Put

08/10/2012 13:25:03
Quote Anchor link
Chris, als de random id tijdens de huidige sessie niet verandert, gebruik je in wezen een dubbele sessie-id. Twee id's zijn veiliger dan één, maar je kunt min of meer hetzelfde bereiken met één veel sterkere sessie-id, bijvoorbeeld:

ini_set('session.hash_function', 'sha512');

Wat ik veel meer bedoelde, was élke HTTP-respons voorzien van een uniek token dat bij het eerstvolgende HTTP-verzoek moet worden geretourneerd. Als het geretourneerde token niet gelijk is aan het laatste in de database opgeslagen token, kun je de complete sessie ongeldig verklaren.

Als je een voortdurend veranderend token opslaat in een database, kunnen twee clients niet meer één sessie delen. Het ongeldige (verouderde) token vernietigt namelijk de gehele sessie.

Schematisch:

1. Gebruiker A start sessie x en krijgt token y.

2. Indringer B kaapt sessie x met geldige sessie-id en krijgt token z.

3. Gebruiker A doet weer iets in sessie x maar retourneert het verlopen token y.

4. Fout afgevangen: y moest z zijn, dus de gehele sessie wordt vernietigd.
 
- SanThe -

- SanThe -

08/10/2012 13:25:28
Quote Anchor link
Mijn methode:
- Er komt een bezoeker op de site.
- Session starten.
- Kijken of er een cookie is.
- Zo nee:
- (A) Is een nieuwe bezoeker.
- - Maak een nieuwe session (met nieuw session_id) aan.
- - Set een cookie met sha1(ip-nummer).
- - Zet session_id en sha1(ip-nummer) in de database.
- Zo ja:
- - Kijken of session_id in de database staat.
- - Zo nee:
- - - Dan is het een nieuwe bezoeker en ga naar (A).
- - Zo ja:
- - - Cookie uitlezen.
- - - Kijken of cookieinhoud bij het session_id hoort in de database.
- - - Zo nee:
- - - - Hacker.
- - - - Stuur mail naar webmaster.
- - - - Ga naar (A) als nieuwe bezoeker.
- - - Zo ja:
- - - - Geef cookie nieuwe inhoud sha1(ip-nummer).
- - - - Update het record van het session_id en set sha1(ip-nummer).
 
Ward van der Put
Moderator

Ward van der Put

08/10/2012 13:41:41
Quote Anchor link
@SanThe. Als het (vaak vaste) IP-nummer van het slachtoffer bekend is, is sha1(IP-nummer) ook zo gevonden en kan de hacker dus het bijbehorende cookie ook vervalsen. Kun je dan niet beter sha1(IP-nummer . SECRET_KEY) gebruiken? IP-nummer en het gebruik van sha1() zijn gemakkelijk te raden, maar de SECRET_KEY bijna niet als je er een lange, aselecte string van maakt.
 
- SanThe -

- SanThe -

08/10/2012 13:47:44
Quote Anchor link
@Ward: Je kan daar inderdaad iets anders van maken. Zoals Cris reeds aangaf bijvoorbeeld een Random id. Of zoals jij beschrijft een SECRET_KEY er bij. Hoe onbekender, hoe beter.
 
Chris PHP

Chris PHP

08/10/2012 13:48:57
Quote Anchor link
@SanThe,

Het enige wat ik zou veranderen, is dat de sessie evenals de cookie na elke logout gedelete wordt. Zodat er geen troep op de pc achterblijft, en de hacker niet de random id uit de cookie kan halen.

Bij mij zou ik er per login/logout een nieuwe sessie-id genereren evenals een nieuwe random controle string voor de random cookie. Dit is mijn zicht erop, als ik naar mijn eigen browsergedrag kijk clear ik na elke keer internetten mijn complete borwser history.
 
- SanThe -

- SanThe -

08/10/2012 13:56:52
Quote Anchor link
@Cris: Wat jij aangeeft zit er allemaal in. Maar dat leek mij een beetje erg veel info in mijn opsomming.
 
Chris PHP

Chris PHP

08/10/2012 14:03:54
Quote Anchor link
- SanThe - op 08/10/2012 13:56:52:
@Cris: Wat jij aangeeft zit er allemaal in. Maar dat leek mij een beetje erg veel info in mijn opsomming.


Aaah ok, helder :D
 
Mik PHP

Mik PHP

08/10/2012 14:12:50
Quote Anchor link
@SanThe,

Hebben we nu niet weer hetzelfde probleem dat het op mobieltjes niet werkt? Omdat je weer het ip adres gebruikt voor de hash?
 
Chris PHP

Chris PHP

08/10/2012 14:20:47
Quote Anchor link
Mik tH op 08/10/2012 14:12:50:
@SanThe,

Hebben we nu niet weer hetzelfde probleem dat het op mobieltjes niet werkt? Omdat je weer het ip adres gebruikt voor de hash?


Ja dat is wat SanThe ook al aangaf een post terug, dat er ter controle beter een andere manier gepakt kan worden voor het genereren van een controle hash.
 
Mik PHP

Mik PHP

08/10/2012 14:37:26
Quote Anchor link
Ward van der Put op 08/10/2012 13:25:03:
Chris, als de random id tijdens de huidige sessie niet verandert, gebruik je in wezen een dubbele sessie-id. Twee id's zijn veiliger dan één, maar je kunt min of meer hetzelfde bereiken met één veel sterkere sessie-id, bijvoorbeeld:

ini_set('session.hash_function', 'sha512');

Wat ik veel meer bedoelde, was élke HTTP-respons voorzien van een uniek token dat bij het eerstvolgende HTTP-verzoek moet worden geretourneerd. Als het geretourneerde token niet gelijk is aan het laatste in de database opgeslagen token, kun je de complete sessie ongeldig verklaren.

Als je een voortdurend veranderend token opslaat in een database, kunnen twee clients niet meer één sessie delen. Het ongeldige (verouderde) token vernietigt namelijk de gehele sessie.

Schematisch:

1. Gebruiker A start sessie x en krijgt token y.

2. Indringer B kaapt sessie x met geldige sessie-id en krijgt token z.

3. Gebruiker A doet weer iets in sessie x maar retourneert het verlopen token y.

4. Fout afgevangen: y moest z zijn, dus de gehele sessie wordt vernietigd.


Misschien zie ik het fout, maar betekend dit niet dat Gebruiker A uitgelogd word en gebruiker B (hacker) niet?

En dat de sessie pas vernietigt word als Gebruiker A weer een actie onderneemt, dus dat Gebruiker B (Hacker) tussen die periode alles kan doen wat hij wil?
Gewijzigd op 08/10/2012 14:39:02 door Mik PHP
 
Chris PHP

Chris PHP

08/10/2012 14:49:44
Quote Anchor link
@Mik,

Nee want de sessie wordt beeindigd, dus is de hacker ook gelijk 'uitgelogd' aangezien de sessie niet meer actief is :D
 
Ward van der Put
Moderator

Ward van der Put

08/10/2012 15:02:28
Quote Anchor link
@Mik, als je het via een database laat lopen, kun je de gedeelde/gestolen sessie voor beiden vernietigen. Aansluitend kun je, indien nodig, ook tijdelijk automatisch beide IP-adressen blokkeren.

Dat kán juist voordelen hebben. De gebruiker kan uit foutmeldingen zelf afleiden dat er iets niet in de haak is. En je moet extra oplettend zijn bij gebruikers waarvan de sessie wordt gehackt, want dat kan bijvoorbeeld betekenen dat ze een onveilig netwerk gebruiken, dat hun verouderde browser lek is of dat hun accountgegevens op straat liggen.

Het geeft je verder ook de mogelijkheid om onmiddellijk een twee-factor beveiliging te activeren. Is je sessie gestolen? Dan moet je bijvoorbeeld met een bevestiging/code via e-mail of sms een nieuw wachtwoord opgeven. Daarvoor heb je een ingreep van de echte gebruiker nodig, niet de hacker.

Uiteindelijk is beveiliging ook een keuze. En in dit geval een vraag: wil je dat een gebruiker waarvan de sessie wordt gekaapt met dezelfde rechten kan verder werken? Meestal is het antwoord daarop: nee.

Het omgekeerde is bij mijn voorbeeld overigens ook mogelijk en dan krijg je een vorm van een cross-site request forgery (CSRF). De hacker start daarbij een geldige sessie, maar leidt de echte gebruiker aansluitend naar dezelfde sessie. Uit de start van de sessie kun je dus niet afleiden wie de slechterik of goedzak is; ook daarom moeten beide worden geweigerd.
 
Ozzie PHP

Ozzie PHP

08/10/2012 15:05:44
Quote Anchor link
Ward van der Put op 08/10/2012 15:02:28:
Uit de start van de sessie kun je dus niet afleiden wie de slechterik of goedzak is; ook daarom moeten beide worden geweigerd.

Goed punt.
 

Pagina: « vorige 1 2 3 4 volgende »



Overzicht Reageren

 
 

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.