Login met sessies veilig?
Ik heb in php een site waarbij alleen gebruikers met een account toegang mogen krijgen tot de content.
Ik heb dit dit stukje code geinclude bovenaan elke pagina van mijn site:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
if(!isset($_SESSION['user'])){
echo "<div class=\"container\"><div class=\"centertitle\"><h1>Sorry, u heeft geen toegang tot deze pagina!</h1></div><br>";
echo "<div class=\"centerdiv\">Het ziet er naar uit dat je niet bent ingelogd. Om in te loggen klik dan <a href=\"http://www.mijnsite.nl/\">hier!</a><br></div></div>";
include "inc/footer.php";
echo "</div></body></html>";
exit;
}
?>
if(!isset($_SESSION['user'])){
echo "<div class=\"container\"><div class=\"centertitle\"><h1>Sorry, u heeft geen toegang tot deze pagina!</h1></div><br>";
echo "<div class=\"centerdiv\">Het ziet er naar uit dat je niet bent ingelogd. Om in te loggen klik dan <a href=\"http://www.mijnsite.nl/\">hier!</a><br></div></div>";
include "inc/footer.php";
echo "</div></body></html>";
exit;
}
?>
Is dit zo veilig om te gebruiken? Of raden jullie aan om dit op een andere manier te doen?
Verder is het veilig, want sessies zijn niet manipuleerbaar clientside.
Lijn ook eens je code uit, dit is echt niet net.
- Raoul - op 08/01/2013 22:12:16:
Misschien handig om aan TS uit te leggen wat SHORTTAGS zijn en waarom het gebruik niet mag, in plaats van vijf uitroeptekens?Gebruik geen SHORTTAGS!!!!!
Gewijzigd op 08/01/2013 22:49:14 door Aad B
Bij veel hostingproviders is <? echter uitgeschakeld, waardoor je dus niet altijd de garantie hebt dat je PHP-code werkt. Gebruik daarom liever altijd <?php, dan zit je sowieso veilig.
Gewijzigd op 08/01/2013 23:09:49 door Roel -
Gewijzigd op 08/01/2013 23:20:24 door Bas IJzelendoorn
Ik zou bij echo ' gebruiken, zodat je bij de HTML die er in staat de " niet hoeft te escapen.
Je kan ook doen if isset $session[ user] && $session[user] == registered voor als de in de toekomst meerdere gebrukers heb.
Tim Slootweg op 09/01/2013 01:28:46:
if isset $session[ user] && $session[user] == registered
Waarom een voorbeeld geven met zo veel fouten?
if(isset($_SESSION['user']) && $_SESSION['user'] == 'registered')
@SanThe: er bestaat ook zo iets als pseudo code...
No One op 09/01/2013 09:24:23:
@SanThe: er bestaat ook zo iets als pseudo code...
Wat verwarrend kan zijn voor mensen die er al niet zoveel van snappen..
@mebus..als ze er niet zoveel van snappen dan zou ik ze willen aanraden eerst de basis goed aan te leren ;)
No One op 09/01/2013 10:07:53:
@mebus..als ze er niet zoveel van snappen dan zou ik ze willen aanraden eerst de basis goed aan te leren ;)
=true :-)
Als je geen deftige voeling hebt met de syntax; zal je er niet geraken.
Mensen die hier 100 lijnen code posten (met sessies, met database...) en dan afkomen met "Wat betekent die parse error ... ?"
Daar heb ik het moeilijk mee.
Ik heb mijn code aangepast en deze ziet er nu zo uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if (!isset($_SESSION['user']))
echo '<div class="container">
<div class="centertitle">
<h1>Sorry, u heeft geen toegang tot deze pagina!</h1>
</div>
<br>
<div class="centerdiv">Het ziet er naar uit dat je niet bent ingelogd. Om in te loggen klik dan <a href="http://www.mijnsite.nl/">hier!</a><br>
</div>
</div>';
include 'inc/footer.php';
echo '</div>
</body>
</html>';
exit;
}
?>
if (!isset($_SESSION['user']))
echo '<div class="container">
<div class="centertitle">
<h1>Sorry, u heeft geen toegang tot deze pagina!</h1>
</div>
<br>
<div class="centerdiv">Het ziet er naar uit dat je niet bent ingelogd. Om in te loggen klik dan <a href="http://www.mijnsite.nl/">hier!</a><br>
</div>
</div>';
include 'inc/footer.php';
echo '</div>
</body>
</html>';
exit;
}
?>
Bedankt voor jullie reacties!
Ik had even geen erg in de short tags omdat mijn host hier gewoon mee om kan gaan, maar op jullie aanraden heb ik dit aangepast. De echo's van regel 3 en 4 heb ik nu ook bij elkaar gestopt.
Ik heb nu nieuwe vragen over de reacties:
1. Echo gebruik ik nu met enkele ' ipv " in dit script, is dit altijd het slimst om te gebruiken bij een echo?
2. Het "uitlijnen" van mijn script, doe ik dat zo op deze manier goed of niet? En is er misschien ergens een tutorial beschikbaar over het uitlijnen van je script?
3. if(isset($_SESSION['user']) && $_SESSION['user'] == 'registered'), dit gebruik ik alleen als ik een specifieke gebruiker toegang tot content wil geven toch? Zo gebruik ik het namelijk om de administrator toegang te verlenen tot bepaalde functies waar een normale gebruik niet bij mag.
Pseudo code vind ik goed hoor, ik denk dat ik php al een beetje onder de knie heb, maar erg ervaren ben ik nog niet. Als ik iets niet snap dan vraag ik het gewoon:). In ieder geval nog bedankt voor de reacties!
Gewijzigd op 09/01/2013 10:59:24 door Davey Mat
Op de ipad duurt code zo lang om te schrijven....
No One op 09/01/2013 09:24:23:
@SanThe: er bestaat ook zo iets als pseudo code...
En dat is?
http://tinyurl.com/bam2vng hier wordt dat goed uitgelegd
if isset $session[ user] && $session[user] == registered
maar ook:
if jij niet snap then
ask again
else
you're welcome
is al zoiets...
Davey Mat op 09/01/2013 10:52:09:
...
3. if(isset($_SESSION['user']) && $_SESSION['user'] == 'registered'), dit gebruik ik alleen als ik een specifieke gebruiker toegang tot content wil geven toch?
...
3. if(isset($_SESSION['user']) && $_SESSION['user'] == 'registered'), dit gebruik ik alleen als ik een specifieke gebruiker toegang tot content wil geven toch?
...
Wel, je kiest zelf welke betekenis je aan die variabele wil geven.
Wat was jouw plan met die variabele? Zou je daar bv. de username in steken?
Dan is
if(!isset($_SESSION['user'])){
ruim voldoende.
$_SESSION['user'] bestaat niet -> gebruiker is niet ingelogd. Meer moet dat niet zijn.
Ja, ik wou alleen maar even aangeven dat je ook makkelijk met meerdere gebruikers type kan werken. Maar dit kan je ook later doen.