Tot slot… de hash

Als laatste nog even een kleine aanvulling. Naast het stelen van de sessie id kan een meer ervaren ‘hacker’ ook sessies zelfs wijzigen. Uiteraard is ook de kans dat dit gebeurt zeer klein, maar neem het zekere voor het onzekere! Een mogelijke en simpele oplossing hiervoor is het genereren en opslaan van een hash. Een ‘hash’ is een soort van controle code voor bepaalde data waarmee eenvoudig vast te stellen is of data corrupt is of niet.

Het genereren van de hash:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?
    // start de sessie
    session_start();

    $sessdata_str = serialize($_SESSION);
    $md5hash = md5($sessdata_str);

    // opslaan van de hash
    $_SESSION[hash] = $md5hash;
?>


Simpel toch? Oh ja… bij het vergelijken van de hash met de sessie data moet je nog even opletten! Er is namelijk een variabele toegevoegd aan de sessie, die niet mee opgenomen is in de hash:

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
<?
    // start de sessie
    session_start();

    // ip check en overige dingen..

    $sessdata = $_SESSION;
    unset($sessdata[hash]);

    sessdata_str = serialize($sessdata);
    $md5hash = md5($sessdata_str);

    // controleren van de hash
    if ($_SESSION[hash] == $md5hash)
    {

        // hash komt overeen! Sessie is geldig!!
    }
?>


Tot slot dus dit voorbeeldje. Uiteraard zijn er nog talloze andere manieren om sessie nog veiliger te maken, dus mis je hier nog iets dan hoor ik dit graag! Succes met PHP verder!

Daniel Bakker.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Veiligheid?! Pff… ik gebruik toch sessies!
  2. Superglobals
  3. Het echte werk…
  4. Tot slot… de hash

PHP tutorial opties

 
 

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.