De meeste scripters onder jullie die met PHP bezig zijn kennen wel de code.
0 | header( "Location: http://www..." ); |
Maar is deze code nu eigenlijk veilig? De meeste scripters gaan er gewoon blindelings vanuit dat deze header regel een redirect als gevolg gaat hebben. Maar het werken van deze redirect zal gewoon afhangen van hoe we de webpagina gaan bekijken. Stel nu dat we een pagina met een header redirect gaan bekijken in een command line, denk je dat deze redirect dan nog gaat werken? Ik weet wel zeker dat dit niet zo zal zijn.
Even een voorbeeld. We hebben een pagina met de volgende code:
0 1 2 3 4 5 6 7 | <?php if ($_SESSION["gebruiker"] != 1) { header("Location: login.php"); } echo "Een heel groot geheim dat niet leden zeker niet mogen lezen."; ?> |
Als we deze in een browser gaan bekijken krijgen we dit:

Browser wordt doorgestuurd naar login pagina
Je wordt meteen doorgestuurd naar de login pagina. Maar wat krijg je te zien als je deze admin pagina nu eens bekijkt via netcat die de HTTP header location niet kan afhandelen.

Admin pagina bekijken met netcat
Je krijgt gewoon het geheim te zien op het scherm. Dit is dus niet echt veilig.
Veilige header redirect
Hoe kunnen we bovenstaande code nu beveiligen?Er zijn twee manieren om dit te doen.
Methode 1:
0 1 2 3 4 5 6 7 8 | <?php if ($_SESSION["gebruiker"] != 1) { header("Location: login.php"); exit(); } echo "Een heel groot geheim dat niet-leden zeker niet mogen lezen."; ?> |
Methode 2:
0 1 2 3 4 5 6 7 | <?php if ($_SESSION["gebruiker"] != 1) { header("Location: login.php"); }else{ echo "Een heel groot geheim dat niet-leden zeker niet mogen lezen."; } ?> |