You may want to put some text here

Een veilige header redirect maken

De meeste scripters onder jullie die met PHP bezig zijn kennen wel de code.

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:

<?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:

Redirect naar login pagina
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.

Netcat gebruiken als browser
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:

<?php
if ($_SESSION["gebruiker"] != 1)
{
header("Location: login.php");
exit();
}

echo "Een heel groot geheim dat niet-leden zeker niet mogen lezen.";
?>

Methode 2:

<?php
if ($_SESSION["gebruiker"] != 1)
{
header("Location: login.php");
}else{
echo "Een heel groot geheim dat niet-leden zeker niet mogen lezen.";
}
?>

The Author of this post is Wim Mostmans

Wim Mostmans heeft een eigen webontwikkeling bedrijf Sitebase waar hij voltijds voor werkt. Hij beheert ook nog enkele websites waaronder deze en een Computerforum. Blijf op de hoogte van waar Wim mee bezig is door hem te volgen op Twitter.

Leave a Comment