Sessie beveiligen tegen hijacken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C++ Ontwikkelaar

Functieomschrijving Ben jij als software ontwikkelaar toe aan een nieuwe uitdaging? Dan zoeken wij jou! Voor het maken van de procesbesturingssoftware gebruiken onze projectteams een in C++ en C# geschreven tool. Dit is een gedistribueerd object framework wat alle kernfuncties biedt voor een procesautomatisering. Verder zullen jouw werkzaamheden o.a. bestaan uit: Ontwerpen, programmeren en testen van product aanpassingen; Analyseren van vragen en wensen van gebruikers en deze vertalen naar een functioneel ontwerp; Inzichtelijk maken van voortgang omtrent softwarewerkzaamheden, o.a. door middel van SCRUM; Continu toetsen van het effect van nieuwe releases op andere tools en processen; Implementeren van nieuwe product

Bekijk vacature »

Typescript Developer / Cloud platform

Dit ga je doen (Door)Ontwikkelen van het cloud platform; (Door)Ontwikkelen van microservices; Bouwen van nieuwe functionaliteiten; Verbeteringen aandragen voor het cloud platform; Sparren met de business. Hier ga je werken Onze opdrachtgever, gevestigd in regio Eindhoven, levert een compleet dienstenpakket op het gebied van IT. Zij pakken verschillende (complexe) vraagstukken van grote organisaties op. De sfeer intern is gezellig en informeel. Men houdt van hard werken maar gezelligheid door middel van een borrel of gezamenlijke lunch komt er veel voor. Als Typescript ontwikkelaar word je onderdeel van het team gericht op de (door)ontwikkeling van hun eigen cloud platform welke wordt

Bekijk vacature »

Medior/Senior Front-end Developers gezocht (Utrech

Functie Het team bestaat uit 10+ gespecialiseerde (veel senior) front-end ontwikkelaars en ontwerpers die werken aan projecten voor klanten van verschillende groottes (kan twee jaar bezig zijn met 1 klant). Je helpt klanten met ingewikkelde front-end vraagstukken, hierbij kun je denken aan: UX/UI design, CI/CD, architectuur en integratie met back-end systemen. De werkzaamheden verricht je op locatie bij de klant, dit is vaak in de Randstad. De organisatiestructuur is plat en er heerst een informele sfeer, zo kun je met vragen dus terecht bij de directie. Er wordt veel nadruk gelegd op het bevorderen van persoonlijke ontwikkeling door middel van

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc 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

Bekijk vacature »

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 »

Software Developer

Dit ga je doen Ontwerpen, ontwikkelen en onderhouden van (mobiele) internettoepassingen; Ontwikkelen en onderhouden van Microservices; Ontwerpen en optimaliseren van databases; Identificeren van nieuwe trends/ontwikkelingen binnen de branche. Hier ga je werken Deze marktleider op gebied van fietsen en fietservaring is gevestigd in twee provincies, verspreid over meerdere locaties. Jij zult voornamelijk in regio Joure aan de slag gaan. De organisatie doelt zich op het leveren van kwalitatief hoogwaardige producten aan alle hun klanten. De organisatie telt circa 4.000 medewerkers in meer dan 10 verschillende landen. Momenteel is de organisatie op zoek naar een Software Developer wilt meewerken aan het

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 »

Front-end Developer

Dit ga je doen Het onderhouden, ontwikkelen en testen van front-end software van diverse klant- en medewerkersapplicaties; Het ontwikkelen van maatwerk front-end oplossingen in Vue.js en participeren in een scrumteam; Mede-verantwoordelijk voor het begeleiden en coachen van drie junior front-end developers; Verantwoordelijk voor code-reviews en het opstellen van de juiste documentatie zoals userstories en API ontwerp; Participeren in diverse projecten t.b.v. optimalisatie van diverse applicaties; Het opzetten van API koppelingen met externe applicaties. Hier ga je werken Betreffende organisatie is gevestigd in de regio van Swifterbant en is al ruim 20 jaar lang bedreven in het ontwikkelen en aanbieden van

Bekijk vacature »

No-Code Betty Blocks ontwikkelaar

Bedrijfsomschrijving Wil jij de bedrijfsprocessen van klanten revolutionair digitaliseren en optimaliseren zonder beperkt te worden door programmeertalen? Kom werken bij een snelgroeiende en professionele organisatie met een gezonde dosis humor en veel vrijheid om jezelf te ontwikkelen. Als No-Code Betty Blocks ontwikkelaar werk je vanuit ons kantoor in het hart van Nederland, je thuiswerkplek of op locatie bij de klant. We faciliteren de juiste trainingen en ondersteuning zodat je een echte Betty Blocks expert wordt. Naast het werk zijn er bij ons bijzondere events, zoals een jaarlijkse zeildag, een zomerse barbecue en een knus kerstdiner om de grillige maanden door

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar start jij in één van onze vier scrumteams. Met 30 ontwikkelaars werk jij aan de doorontwikkeling van ons core product. Ook werkt jouw team aan maatwerkoplossingen op aanvraag van de klant en op projectbasis. Wij vinden het erg belangrijk dat onze ontwikkelaars met plezier naar werk gaan. Een deel hiervan ligt uiteraard bij jezelf, als jij ontwikkelen niet leuk vindt, ben jij bij ons echt aan het verkeerde adres. Jouw team bestaat namelijk uit een groep gepassioneerde vakidioten die dit werk doen omdat dit eerst een hobby was! Daarnaast wordt er intern rekening gehouden met

Bekijk vacature »

Database developer - SQL

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je sluit aan bij meetings en brengt het gehele logistieke proces in kaart. Vervolgens ga je als lead developer aan de slag om de klus te klaren. Je stuurt het junior developer team en helpt, zo nodig,

Bekijk vacature »

.NET developer

Functie Als .NET developer wordt jij onderdeel van ons ICT team. In dit multidisciplinaire team ben jij samen met onze senior .NET ontwikkelaar en medior .NET ontwikkelaar verantwoordelijk voor ons ERP systeem. In dit systeem (Navision) ga jij leren ontwikkelen. Wij bieden jou dan ook een gedegen opleiding aan, samen met de ondersteuning van onze Senior .NET developer. Daarnaast ga jij aan de slag met ons portaal geschreven in Sharepoint. Verder ben jij verantwoordelijk voor EDI verkeer en het ontwikkelen binnen het ERP systeem en andere toepassingen en rapportages. Van jou wordt verwacht dat jij het proces goed leert kennen

Bekijk vacature »

Senior Java Developer

Als Senior 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

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 »

Medior .NET Ontwikkelaar

In het kort Als .NET ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan we deze uitdaging graag met

Bekijk vacature »
Jaws

Jaws

19/11/2006 17:24:00
Quote Anchor link
Ik ben al een tijdje bezig met een inlogscript. Ik heb her en der gelezen dat het mogelijk is een sessie te hijacken, door in je headers de sessieid te plaatsen van de persoon die op dat moment legaal in dezelfde sessie zit.

Maar ik kom er maar niet uit hoe ik dit nou kan oplossen? En als ik dan iets zou hebben weet ik niet hoe ik kan testen of mijn eigen sessie nou wel of niet te hijacken is met het huidige script ;)

Wie kan me een beetje opgang helpen?
 
PHP hulp

PHP hulp

22/12/2024 11:52:31
 

19/11/2006 17:30:00
Quote Anchor link
Maak een database tabel aan en sla hiering de sessie id en het ip adres op.
Controleer steeds of de combinatie van sessie id en ip nog juist is.
Zoniet:
exit("Jammer, maar deze site is dus wel beveiligd.");
 
Frank -

Frank -

19/11/2006 18:47:00
Quote Anchor link
Zet bij het inloggen het ip-adres in de sessie met behulp van sha1() en een salt. Op alle vervolg pagina's ga je controleren of de hash die in de sessie staat nog steeds gelijk is aan de hash die je op de vervolgpagina's berekent op basis van het ip-adres dat daar wordt gebruikt:
salt.inc.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$salt
= '1w5Rb$l[Pf'; // geheime salt, kun je beter buiten de webroot zetten
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
// bij het inloggen:
require_once('salt.inc.php');

$_SESSION['hash'] = sha1($salt.$_SERVER['REMOTE_ADDR'];
?>

En dan de volgpagina's:
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
15
16
17
18
19
<?php
session_start();
require_once('salt.inc.php');

if(isset($_SERVER['REMOTE_ADDR'])){
  $check =  sha1($salt.$_SERVER['REMOTE_ADDR']);

  if(isset($_SESSION['hash']) && $_SESSION['hash'] == $check){
    echo 'session is niet gehackt.';
  }

  else {
    die('Er is een fout opgetreden.'); // Wees ze vaag mogelijk! Geen melding is nog beter.
  }
}

else {
  header('Location: login.php'); // terug naar de login-pagina
  exit(); // stop de rest van het script
}
?>

Zet deze check even in een functie, wel zo handig, je hebt hem op iedere beveiligde pagina nodig.

Edit: Code gecorrigeerd n.a.v. opmerking Blanche, bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Kalle P

Kalle P

19/11/2006 18:49:00
Quote Anchor link
zet geen wachtwoorden e.d. in je session.
 
Frank -

Frank -

19/11/2006 18:52:00
Quote Anchor link
Kalle schreef op 19.11.2006 18:49:
zet geen wachtwoorden e.d. in je session.
Durf je wel? Zo maar met bruut geweld een open deur intrappen? Zeker weer zo'n lompe Amsterdammer! ;)
 
- SanThe -

- SanThe -

19/11/2006 18:57:00
Quote Anchor link
Frank schreef op 19.11.2006 18:52:
Kalle schreef op 19.11.2006 18:49:
zet geen wachtwoorden e.d. in je session.
Durf je wel? Zo maar met bruut geweld een open deur intrappen? Zeker weer zo'n lompe Amsterdammer! ;)

Lol ;-)
 
Paul K

Paul K

19/11/2006 19:30:00
Quote Anchor link
Als je een foutje maakt bij een veld of een text dan kan je gwoon zo de sessies druit halen;)
kijk ook daarma uit
 
Frank -

Frank -

19/11/2006 19:34:00
Quote Anchor link
Paul schreef op 19.11.2006 19:30:
Als je een foutje maakt bij een veld of een text dan kan je gwoon zo de sessies druit halen;)
kijk ook daarma uit
Geef eens een voorbeeldje, ik snap hier niets van.
 
Jaws

Jaws

19/11/2006 20:20:00
Quote Anchor link
Ok thx voor de voorbeelden Frank. Heb alleen nog wat vragen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $_SESSION['hash'] = sha1($salt.$_SERVER['REMOTE_ADDR']; ?>

Hier zet je dus een Hash van Sha1 met als combinatie je ip + een salt.

Ik deed dit nu dus met een $_SESSION['user'] = $gebruikersnaam. De gebruikersnaam kwam binnen met $_POST via een form. Ik vond dit handig omdat ik telkens als ik later een query wilde maken ik gewoon iets deed in de trand van "select blablab from tabel where user = '$_SESSION['user']'".
Hoe kan ik dit anders oplossen nu als ik een hash als sessie id gebruik? Of snap ik het niet helemaal?

Dan het stukje erna (zie mijn extra commentaar):
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
15
16
17
18
19
<?php
session_start();
require_once('salt.inc.php');

if(isset($_SERVER['REMOTE_ADDR'])){
  $check =  sha1($salt.$_SERVER['REMOTE_ADDR']);

  if(isset($_SERVER['hash']) && $_SERVER['hash'] == $check){ //Moet dit niet zijn $_SESSION['hash'] ipv. $_SERVER['hash']???
    echo 'session is niet gehackt.';
  }

  else {
    die('Er is een fout opgetreden.'); // Wees ze vaag mogelijk! Geen melding is nog beter.
  }
}

else {
  header('Location: login.php'); // terug naar de login-pagina
  exit(); // stop de rest van het script
}
?>


En tot slot vroeg ik me af hoe ik die "salt" dan buiten de publieke www map zet? en hoe ik die dan doe includen.
Gewijzigd op 01/01/1970 01:00:00 door Jaws
 
Jaws

Jaws

21/11/2006 12:15:00
Quote Anchor link
Laat ik het dan even anders stellen.

Nu zet ik de gebruikersnaam in de sessie dus $_SESSION['user'] = $gebruikersnaam. Dit gebeurd pas als ik de gebruikersnaam die ingevoerd werd in het form overeenkomt met de gebruiker-ww combinatie in mijn database.

maar als ik nu, zoals Frank in zijn script laat zien, een hash als Sessie id gebruik dan weet mijn sessie alleen welke hash hij heeft maar niet meer de gebruiker, toch? Hoe kan ik die gebruikersnaam laten meesturen in de sessie? Of is de enige oplossing de Hash in een DB plaatsen met de gebruikersnaam en daarna weer uitlezen voor controle? Ik zou liever niet de DB erbij betrekken alleen als het niet op een andere manier veilig zou kunnen.
Gewijzigd op 01/01/1970 01:00:00 door Jaws
 
Joren de Wit

Joren de Wit

21/11/2006 12:42:00
Quote Anchor link
Je kunt toch meerdere variabelen in een sessie zetten? Je gebruikt die hash om te controleren of je sessie niet gehackt is en de gebruikersnaam om het voor jou makkelijk te maken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$_SESSION
['hash'] = 'je gegenereerde hash';
$_SESSION['user'] = $gebruikersnaam;
?>


Wat betreft het script van Frank: er staat nog wel een fout in. De twee $_SERVER's op regel 7 moeten $_SESSION zijn.
 
Frank -

Frank -

21/11/2006 12:52:00
Quote Anchor link
Code gecorrigeerd! Toch maar goed dat er meerdere mensen naar kijken, had de fout zelf namelijk niet gezien en had hem niet getest...
 
Jaws

Jaws

21/11/2006 13:23:00
Quote Anchor link
Het foutje in Franks script was me toevallig ook opgevallen, zie maar mijn post hiervoor in het commentaar van het script ;)

Oh Dank u Blanche!
Ik wist niet dat je gewoon meerdere variabelen in een sessie kon plaatsen. Ik denk dat ik het PHPsessie ID verwisselt heb met een gewone variabele. Ben nog niet zo veel bezig geweest met sessies namelijk.

Dan rest me alleen nog die "salt" wat buiten de webroot moet komen te staan.
Welke map kun je daar normaal voor gebruiken als je gewoon een Linux webhoster hebt voor je site? Komt die dan in de private_html map bijv.? Ik neem aan dat ik niet gewoon in het wilde weg een bestandje kan plaatsen in een map.
 



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.