Superglobals

Voordat we beginnen met het ‘veiliger’ maken van sessies eerst nog even wat basic informatie over veiligheid. In PHP 4.2.0 werden voor het eerst de zogenaamde superglobals geïntroduceerd. Gelukkig heeft Mathieu hierover al een zeer duidelijk artikel geschreven, dat hier ook te lezen is. De reden dat ik dit onderwerp hierbij betrek is simpel, kijk maar eens naar het volgende voorbeeldje:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

    // start de sessie
session_start();
    
    // controleer of de gebruiker ingelogd is
    if ($login == 1)
    {

        // ingelogd!
    }

?>


Zoals je ziet controleert dit ‘script’ of een gebruiker ingelogd is of niet. Dit gebeurt aan de hand van de sessie variabele $login, toch? Hoewel dit script voor een beginnende PHP’er misschien veilig lijkt zal het voor de iets meer gevorderden direct duidelijk zijn dat $login niet perse een sessie variabele hoeft te zijn. De check is namelijk zeer eenvoudig te omzeilen door het script aan te roepen via: script.php?login=1.

Lijkt me duidelijk, nietwaar? De oplossing is uiteraard net zo simpel als het voorbeeldje zelf. In plaats van het controleren van de variabelen $login, controleren we nu de ‘echte’ sessie variabele $login, door middel van de volgende code:

$_SESSION[‘login’] (of voor php < 4.2.0 HTTP_SESSION_VARS[])

« 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.