Regnery.net Internet

HTML CSS PHP MYSQL JQuery SEO – internetoplossingen

Sessions vervolg

De eerste tutorial over sessions in php heb je gehad. Nu is het tijd voor meer verdieping. In deze tutorial gaan wij dieper in op de mogelijkheden van de sessions in php.

Sessions vervolg: PHP

Een sessions zul je altijd eerst moeten starten door bovenaan de pagina de functie session_start() te plaatsen. Vervolgens kun je aan de slag met mogelijkheden van de session. Je kunt bijvoorbeeld een naam meenemen in je session.

<?php
session_start();
$_SESSION['login_name'] = ‘Jan Bakker’;
?>
<html>
<body>
<?php
$username = $_SESSION['login_name'];
echo ‘Goedendag gebruiker: ‘.$username;
?>
</body>
</html>

Op deze manier kun je dus variabelen opslaan in de Session array van je pagina. De $_SESSION[''] array is een super global gelijk aan $_POST en $_GET. Een superglobal heeft variabelen die je vanaf ieder willekeurig punt in je site kunt benaderen. Je kunt deze variabelen dus benaderen vanuit een script, vanuit een willekeurige functie of vanuit een class.

Let op: omdat de $_SESSION array een superglobal betreft, is het ook gelijk een mogelijkheid voor hackers om je site aan te vallen. Let er dus goed op dat je ook de variabelen in een session goed beveiligt en valideert.

Session ID

Iedere session heeft een unieke id ofwel identifier. De PHP server zorgt voor de sessions en kan meerdere sessions tegelijk draaien. Hier zorgt de server voor. Zodra een bezoeker de eerste pagina bezoekt, zal de server een nieuw ID aanmaken voor deze bezoeker. Dit ID zal of via een cookie, of via de URL of via een formulier behouden blijven gedurende het bezoek van deze bezoeker. Kortom, je legt tussen jouw site en de computer van de bezoeker een lijn aan die uniek is. Standaard zal PHP de session ID via de URL transporteren over het internet.

Houd in je achterhoofd dat deze lijn op geen enkele manier is beveiligd. Sla dus nooit gevoelige informatie op in de session zoals credit card nummers of wachtwoorden. Daarvoor heb je een database. Je kunt wel gebruikersnamen en userlevels in een session plaatsen.

Hoe achterhaal je de ID van de session? Via de functie session_id() kun je de ID achterhalen.

Session ID opslag op computer bezoeker

De beste manier om een session te leggen tussen de server en de computer van je site bezoeker is via een cookie. Een cookie op een computer van een bezoeker is voor een willekeurige hacker moeilijker te achterhalen dan als het via een URL gaat. Je kunt zelf de PHP server dwingen om de session variabelen via een cookie vast te leggen.

<?php

ini_set(‘session.use_cookies’, ’1′);

ini_set(‘session.use_only_cookies’, ’1′);

ini_set(‘sessions.cookie_httponly’, ’1′);

ini_set(‘session.use_trans_sid’, FALSE);

ini_set(‘session.cookie_lifetime’, 600);

?>

 

Op deze manier zal er geen URL zijn met daarin de variabelen van de session.

Kortom, zo bouw je weer een extra muur op voor een eventuele hacker. Maar je bent er nog niet als het gaat om veilig gebruik van sessions.

Via session.cookie_httponly zorg je ervoor dat PHP alleen via HTTP de inhoud van een cookie mag uitvragen en niet via een Javascript. Ook dit vormt een rem op een mogelijke hackers aanval op je site.

De instelling session.use_trans_sid voorkomt dat PHP in de allereerste respons tussen de browser van de bezoeker en jouw server toch een transport van de session id via de URL toestaat.

De session.cookie_lifetime instelling stelt de tijd in hoe lang de cookie voor de session id geldig is. Je stelt de tijd in secondes in. Dus 600 secondes is 10 minuten.