session hijacking,, wat houdt dit in?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mendix Ontwikkelaar - Vernieuwen van het applicati

Bedrijfsomschrijving De ontwikkelingen in de transportsector gaan razendsnel. Bij ons kun je een belangrijke rol spelen in deze sector. We streven ernaar om onze klanten te ontzorgen op het gebied van continuïteit en veiligheid met innovatieve producten en diensten. We willen dat onze klanten de veiligste vervoerders van Europa worden. Ons team werkt hard om deze ambitieuze doelstellingen te bereiken en we bieden een motiverende werkomgeving aan. We zijn op zoek naar zelfstarters met een focus op resultaat en beslissingsbevoegdheid. Functieomschrijving Als Mendix ontwikkelaar bij deze organisatie heb je een gevarieerde baan. Het applicatielandschap wordt vernieuwd en de “schade en

Bekijk vacature »

Full Stack .NET Developer C# ASP.NET

Samengevat: Deze werkgever is gespecialiseerd in het op afstand bewaken en besturen van machines en processen. Ben jij een ervaren Full Stack .NET Developer? Heb je ervaring met C# en ASP.NET? Vaste baan: .Net Developer C# ASP.NET HBO €3.300 - €4.500 Deze werkgever is een snel groeiende onderneming gespecialiseerd in het op afstand bewaken en besturen van machines en processen, IoT (Internet of Things). Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Wil jij bij de top specialisten horen? Ben jij op zoek naar een

Bekijk vacature »

Backend Developer Scrummaster .NET

Samengevat: Deze werkgever is een ambitieus internetbedrijf met een passie voor digitale communicatie. Ben jij geschikt als Backend Developer? Heb je ervaring met .NET platform? Vaste baan: Backend Developer / SCRUM Master Scrum HBO WO €3.800 - €6.000 Deze werkgever is een innovatief bedrijf met enthousiaste mensen die jarenlang ervaring hebben met het ontwikkelen internet- en intranetoplossingen. Wij houden van korte lijnen en open en eerlijke communicatie. Wij zetten graag onze jarenlange ervaring in om perfect werkende oplossingen te ontwikkelen. Wij ondersteunen dienstverlenende organisaties bij het ontwikkelen en realiseren van een effectief, adaptief communicatieplatform. Je ontwikkelt met ons de meest

Bekijk vacature »

Lead Java Developer

Dit ga je doen Je taken bestaan onder andere uit: Het aansturen van een development team bestaande uit 8 collega's op technisch maar ook HR gebied; Het maken van strategische keuzes omtrent de (nieuw)bouw van deze applicatie; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java, Spring, Angular, REST); Reviewen van code en feedback geven op collega developers. Hier ga je werken Als Lead Software Developer ben je verantwoordelijk voor één van de vier Agile Java ontwikkelteams die bouwen aan technologie die duizenden instanties wereldwijd verbindt. Dit Agile team, data Jira en Confluence gebruikt en

Bekijk vacature »

Junior full stack developer

Functie Als full stack developer binnen onze organisatie ga jij je bezig houden met het bouwen van de user experience van de webapplicaties. Je bent verantwoordelijk voor het vertalen van concepten, briefings en designs naar werkende functionaliteit. Hierbij zorg je ervoor dat applicaties betrouwbaar, veilig en toekomstbestendig zijn en een goede architectuur hebben en behouden. Verder denk je actief na- en mee over nieuwe ontwikkelingen en functionaliteiten om zo elke dag de klantervaring weer te verbeteren. Dit doe je natuurlijk niet alleen maar in een development team. Het team bedraagt momenteel 4 man bestaande uit 2 devops engineers en 2

Bekijk vacature »

C#.NET developer

Functie Het development team bestaat momenteel uit vijf backend C#/.NET ontwikkelaars. Op dit moment zit één ontwikkelaar dedicated op de mobiele applicatie. Als team werk je samen aan het zelf ontwikkelde software platform. Dit bestaat uit zowel apps als websites. Om het systeem door meer dan honderdduizenden gebruikers wordt gebruikt is het bijna vanzelfsprekend dat de kwaliteit van het product hoog moet liggen. Het systeem bestaat uit drie projecten. Je werkt dus aan deze drie projecten waarbij de focus op z’n tijd verschuift. De technieken die worden toegepast zijn o.a. .NET Core, Xamarin, C# en MVC. Je zal dus met

Bekijk vacature »

Back-end Developer (Permanent position with the em

Bedrijfsomschrijving Dutch specialist in technical installation materials. Functieomschrijving Purpose of the position: Our client is looking for a Back-end Developer who, together with the rest of the energetic and dynamic team, is responsible for the development and management of the website. This not only concerns the development and management of the current website, but also the development of a new Headless Commerce Platform to keep the customer's website Future proof. Within the IT department, there is a real DevOps culture and the commerce team is at the forefront and tries to implement continuous improvements. Most important tasks: ï‚· Designing and

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

Front-End Developer

As a Front-End Developer at Coolblue you improve the user-friendliness of our webshop for millions of customers. How do I become a Front-End Developer at Coolblue? As a Front-End Developer you work on the user-friendliness of our webshop for millions of customers. You enjoy working with the UX Designer to pick up stories. You get energy from coming up with creative solutions and are happy to present these within the team. You also take pride in your work and welcome any feedback. Would you like to become a Front-End Developer at Coolblue? Read below if the job suits you. You

Bekijk vacature »

.NET developer

Functie The position we have for you As a .NET developer you will work for one of our customers active in the High Tech Industry. Our customers are mainly located in the Eindhoven area. We are very selective when it comes to the projects we accept and therefore only focus on innovative and complex projects. Because our customers are mainly specialized in machine construction, you often work close to the machines. Our team currently consists of Embedded engineers, IOT developers and Cloud engineers. We mainly work on Microsoft projects where WPF, UWP, .NET Core and Microsoft Azure are used. Eisen

Bekijk vacature »

PHP Developer

Als PHP Developer bij Coolblue zorg je ervoor dat onze webshops elke dag een beetje beter zijn. Wat doe je als PHP Developer bij Coolblue? Als PHP Developer werk je met andere development teams samen om onze webshop zo optimaal mogelijk te laten werken en onze klanten blij te maken. Hoewel je een PHP Developer bent, sta je open om C# of Typescript in te zetten of te leren. Ook PHP Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen pure PHP code schrijven. Samenwerken met de klantreiziger om onze klanten

Bekijk vacature »

Front-end developer Consultancy in teamverband wer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers. Momenteel zijn ze op zoek naar een ervaren Front-end of Fullstack developer die samen met de consultants aan de slag gaat om de business requirements te vertalen naar technische oplossingen. Los van het finetunen van extenties, help je bij het configureren van bijvoorbeeld een mobiel bankieren app. Hierin ben je van A tot Z betrokken en zie je bijvoorbeeld ook toe op de uitvoering van testen. Je expertise wordt optimaal benut en je krijgt verschillende kansen om deze uit te breiden door met verschillende innovatieve technologieën aan

Bekijk vacature »

Low-code developer

Functie omschrijving Heb jij altijd al een training willen volgen in het buitenland? Voor een leuke opdrachtgever in omgeving Alphen ad Rijn zijn wij op zoek naar kandidaten die aan de slag willen als Low Code Developer! Beschik jij over HBO/WO nivo, bij voorkeur Informatica, maar een ander technische opleiding zoals bijv. wiskunde, natuurkunde is ook goed. Heb jij aantoonbare affiniteit met IT en ben jij gedreven, enthousiast, communicatief vaardig en klantgericht? Lees dan snel verder! Je wordt getraind tot een volwaardig Low Code Developer, het traject ziet er als volgt uit: Start 1e week januari, opleiding van 3 weken

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Junior Software Developer

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer .NET, C# voor een gaaf bedrijf in de omgeving van Utrecht! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Lees dan snel verder! Voor een opdrachtgever in de omgeving van Utrecht, zijn wij op zoek naar een Junior Software Developer. Werk jij graag aan verschillende projecten en ga je graag klanten op bezoek? Dan is dit de ideale functie voor jou! Binnen deze functie

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

25/04/2024 13:51:55
 
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.