User Submitted Data

De grootste zwakheid in veel PHP programma's ligt niet in de taal zelf, maar is meer een slechte stijl van programmeren zonder beveiliging in gedachten. Om deze reden, zul je ALTIJD de tijd moeten nemen om na te denken over de implicaties van elke stuk code, om te verzekeren dat er geen schade kan worden aangericht omdat er een variabele verkeerd staat.

Voorbeeld 4-5. Gevaarlijk gebruik van variabelen


<?php
// verwijder een bestand uit de home directory van een gebruiker,
// of misschien die van iemand anders.
unlink ($evil_var);

// Log toegang, of misschien niet?
fputs ($fp, $evil_var);

// Voer iets triviaals uit, of misschien "rm -rf *"?
system ($evil_var);
exec ($evil_var);

?>
     
Je zult altijd enorm voorzichtig moeten zijn om ervoor te zorgen dat geen enkele variabele die is gesubmit vanuit een webbrowser grondig is controleerd, met inachtneming van de volgende vragen:

Door jezelf de vragen te stellen tijdens het schrijven van een script, voorkom je het herschrijven van scripts om de veiligheid te vergroten. Met dit in gedachten, zul je niet de veiligheid van een systeem kunnen garanderen, maar de beveiling zal zeker beter zijn dan als je jezelf deze vragen niet stelt.

Je kunt ook overwegen om register_globals, magic_quotes, of andere handigheden uit te zetten die je kunnen tegenwerken om de validiteit, herkomst, of waarde van een gegeven variabele te conroleren. Het werken met PHP in error_reporting(E_ALL) mode kan je ook helpen waarschuwen over variabelen die gebruikt worden voordat ze zijn gecontroleerd of geïnitialiseerd.