Beste allemaal,
Ik heb onlangs een klein leden systeempje gemaakt voor een website (vrijwillig), beveiliging was niet zo'n belangrijk punt, maar ik denk dat er hier en daar wel een lek zit...
Zijn er misschien een paar mensen die even mee kunnen denken?
Dingen die me al niet zo goed lijken:
Het gaat om de volgende code:
Deze wordt dan verwerkt met een switch():
Ik heb onlangs een klein leden systeempje gemaakt voor een website (vrijwillig), beveiliging was niet zo'n belangrijk punt, maar ik denk dat er hier en daar wel een lek zit...
Zijn er misschien een paar mensen die even mee kunnen denken?
Dingen die me al niet zo goed lijken:
- Geen gebruik van mysql_real_escape_string() of hoe dat ook heet
- Wachtwoord én username mee geven in sessie
Het gaat om de volgende code:
PHP:
<?php
## Verschillende statussen:
## 1 = Ingelogd als admin
## 2 = Hack attempt!
## 3 = het inloggen is gelukt! klik hier om door te gaan naar het adminpaneel.
## 4 = 1 of twee velden zijn niet correct ingevuld, probeer het opnieuw.
## 5 = dit invullen om in te loggen
if (isset($_SESSION['login_user']) && isset($_SESSION['login_pass']))
{
$check_session_login_query = 'SELECT * FROM members WHERE login=\''.$_SESSION['login_user'].'\' && wachtwoord=\''.$_SESSION['login_pass'].'\'';
$check_session_login_result = mysql_query($check_session_login_query); // Even een controle toevoegen of het wel of niet lukt gaarne. ook een waarde voor $login als een query niet lukt en dat moet er ook bij de check admin bij.
if(mysql_num_rows($check_session_login_result) > 0)
{
$login = 1;
}
else
{
$login = 2;
}
}
else
{
$check_login_query = 'SELECT * FROM members WHERE login=\''.$_POST['login'].'\' && wachtwoord=\''.md5($_POST['pass']).'\'';
if (isset($_POST['login']) || isset($_POST['pass']))
{
if (!$check_login_result = mysql_query($check_login_query))
{
echo 'dit gaat fout';
}// Even een controle toevoegen of het wel of niet lukt gaarne. ook een waarde voor $login als een query niet lukt en dat moet er ook bij de check admin bij.
if (mysql_num_rows($check_login_result) > 0)
{
$check_login_result = mysql_query($check_login_query);
$check_login_array = mysql_fetch_array($check_login_result);
$_SESSION['login_user'] = $_POST['login'];
$_SESSION['login_id'] = $check_login_array['id'];
$_SESSION['login_pass'] = md5($_POST['pass']);
$login = 3;
}
else
{
$login = 4;
}
}
else
{
$login = 5;
}
}
?>
Deze wordt dan verwerkt met een switch():
PHP:
switch ($login)
{
case 2:
echo '<h1 class=\'warning\'>Hack attempt</h1>';
echo 'Please do not try to hack this site! Thank you.';
$content = 0;
break;
case 5:
echo '<h1>Inloggen</h1>';
include('login.form.php');
$content = 0;
break;
case 4:
echo '<h1>Eingabefehler</h1>';
echo 'Ein oder mehrere Felder sind nicht (korrekt) ausgefüllt.';
include('login.form.php');
$content = 0;
break;
case 3:
echo '<h1>Succesvol ingelogd!</h1>';
echo 'U bent nu succesvol ingelogd, klik hier om naar uw \'Mijn Account\' pagina te gaan.';
$content = 1;
$content2 = 1;
break;
default:
echo '<h1 class="warning">Fout!</h1>';
echo 'Er is een onverwachte fout opgetreden, neem contact op met de beheerder.';
echo 'Something strange happened, please contact the webmaster!';
$content = 0;
break;
}