Bezig met laden...
Internet voor professionals
Vivor Service

U bent niet ingelogd

Inloggen


Wachtwoord vergeten? Blijf ingelogd

Veel gestelde vragen

service.vivor.net

Register globals in PHP

register_globals in PHP

Register_globals is een feature van PHP. Deze feature zorgt ervoor dat allerlei variabelen automatisch worden ingesteld aan de hand van GET, POST, SERVER, SESSION en COOKIE parameters. Dit kan handig zijn, omdat het initialiseren van variabelen dan niet meer hoeft. Tegenover dit kleine voordeel staat een enorm beveiligingsrisico. register_globals biedt namelijk vele mogelijkheden om onveilige code te schrijven.

Bekijk het volgende voorbeeld (bron: php.net):

<?php
// $beheerder is alleen true indien ingelogd
if (beheerder_ingelogd()) {
   $beheerder = true;
}

// Omdat $beheerder niet werd geinitialiseerd met de waarde
// "false", zou iedereen het script aan kunnen roepen als
// GET script.php?beheerder=1 en in kunnen loggen als beheerder!
if ($beheerder) {
   include "/vertrouwelijke/data.php";
}
?>

 

De Situatie

Vanwege de grote kans op onveilige code is in april 2002 door het PHP ontwikkelteam besloten om register_globals standaard uit te zetten. Omdat vele scripts die destijds op onze servers draaiden voor een goede werking afhankelijk waren van register_globals, hebben wij (en veel andere providers) het aan laten staan.

Dit ging lange tijd goed, maar de situatie is veranderd. De laatste maanden worden er steeds meer beveiligingslekken gepubliceerd van het type register_globals. Deze worden actief misbruikt door hackers en virussen. We moeten vrijwel dagelijks sites uitschakelen omdat deze via een register_globals-lek zijn misbruikt. Daarom hebben we besloten het gebruik van register_globals zo snel mogelijk uit te faseren.

 

Ik heb bestaande scripting geïnstalleerd, en nu?

Slechts een deel van alle PHP applicaties maakt gebruik van register_globals. Om uit te vinden of uw applicatie goed functioneert zonder register_globals, kunt u informeren bij de leverancier of ontwikkelaar. Bij oudere applicaties (zeg meer dan een jaar oud) is de kans groot dat ze register_globals gebruiken.

Werkt alles naar behoren, dan hoeft u zich geen zorgen te maken.

Blijkt de applicatie niet goed te werken of krijgt u negatief bericht van de leverancier, dan dient u te upgraden naar een versie van de software die niet afhankelijk is van register_globals.

Bekende applicaties die niet afhankelijk zijn van register_globals (in ieder geval de meest recente versies):

  • Joomla
  • Gallery
  • Mambo
  • phpBB

  • Applicaties waarvan oudere versies vereisen dat register_globals aanstaan:

  • Geeklog
  • OSCommerce
  •  

    Ik heb zelf een script geschreven, en nu?

    Heeft u zelf PHP code geschreven die gebaseerd is op register_globals, dan dient u deze code zo snel mogelijk om te schrijven. Het enige wat u hoeft te doen is uw variabelen te initialiseren. Dit gaat a.d.h.v. de volgende tabel. Gebruikte u voorheen de variable $test die automatisch ingesteld werd, dan dient u deze nu te initialiseren met:

    $_COOKIE['test']
    $_SESSION['test']
    $_GET['test']
    $_POST['test']
    $_SERVER['test']

     

    Voorbeeld van juiste implementatie

    Roept u uw script aan met een URL zoals

    script.php?test=xyz

    dan zet u bovenaan uw script:

     

    $test = $_GET['test'];

     

    En als het niet lukt?

    In principe heeft u als site-beheerder de volledige verantwoordelijkheid over alle scripting en ligt daar een duidelijke scheidingslijn tussen de hoster en de designer/programmeur. Raadpleeg altijd uw webdesigner/programmeur en probeer in samenspraak tot een oplossing te komen. In het uiterste geval kunnen wij voor uw website een uitzondering maken door u te voorzien van een eigen php.ini (PHP configuratie bestand) waarin register_globals is geactiveerd. Dit moet echter gezien worden als een laatste redmiddel waarmee het risico op misbruik van uw webapplicaties ernstig wordt verhoogd!



    Was dit antwoord behulpzaam?


    Maak favoriet Maak favoriet    Print dit artikel Print dit artikel



    Lees ook
    Wat is CGI/ PHP (Bekeken: 1644)

    (i)   U bent verbonden via IPv4 (18.209.104.7) NOC Abuse Referenties Algemene Voorwaarden Contact
      Betalen via iDeal   Betalen via Paypal   cPanel partner   Cleanbits   AMS-IX partner   SIDN deelnemer   ISP gedragscode deelnemer   BIZP selected   Windows compatible   OSX compatible