Veilig?

Status
Niet open voor verdere reacties.

Niellles

Gebruiker
Lid geworden
21 jun 2008
Berichten
194
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:
  • 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&uuml;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;
}
 
mysql_real_escape_string is idd wel een vereiste, maar voor de rest denk ik dat het wel redelijk degelijk in elkaar zit...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan