Commentaar op dit script:

Status
Niet open voor verdere reacties.

Geengezeik

Gebruiker
Lid geworden
15 aug 2012
Berichten
385
Goedendag alle,

Al een tijd gebruik ik onderstaand script, voor verschillende websites. Maar deze heeft een aantal (grote) lekken. Wat mijn niet lukt is: mysql_real_escape_string toevoegen aan de $_POST gedeeltes. Wanneer ik dat bijvoorbeeld doe bij 'gebruikersnaam' lijkt het wel alsof hij heel de gebruikersnaam niet ziet. Want ik krijg dan de melding, dat de gebruikersnaam niet ingevuld is.

Ik werk met sessions, alleen niet gebonden aan IP, is dit beter of juist niet?

Graag suggesties.

PHP:
<?php
error_reporting(0);
session_start();
$databaseid	= $_SESSION['gebruikersid'];
$gebruikersnaam = $_SESSION['gebruikersnaam'];
if (!$gebruikersnaam && !$databaseid){

$form = "<div class='form'><form id='login' action='' method='post'>
				Gebruikersnaam:<br>
				<input type='text'  class='tekst' name='gebruikersnaam' /><br>
				Wachtwoord:<br>
				</span> <input type='password' class='tekst' name='wachtwoord' value='' /><br>
				<input class='submit_nieuw' type='submit' name='inloggen' value='go!'/><br>
			</form></div>";
	
	if ($_POST['inloggen']) {
		$gebruikersnaam = $_POST['gebruikersnaam'];
		$wachtwoord = $_POST['wachtwoord'];

		if ($gebruikersnaam) {
			if ($wachtwoord) {
			
				$wachtwoord = md5(md5("8skA9c" . $wachtwoord . "lAx098S"));	
	
				$query = mysql_query("SELECT * FROM admin WHERE gebruikersnaam='$gebruikersnaam'");

				$numrows = mysql_num_rows($query);
				if ($numrows == 1) {
					$row = mysql_fetch_assoc($query);
					$databaseid = $row['id'];
					$databasegebruiker = $row['gebruikersnaam'];
					$databasewachtwoord = $row['wachtwoord'];
					
					if ($wachtwoord == $databasewachtwoord){

						$_SESSION['gebruikersid'] = $databaseid;
						$_SESSION['gebruikersnaam'] = $databasegebruiker;
						
						echo "<meta http-equiv='Refresh' content='0; url=../../admin.php' />";
						
					}else
						echo "De gegevens kloppen niet. $form";
				
				}else 
					echo "De gegevens kloppen niet. $form";
				
				mysql_close();
						
			}else
				echo "Je moet een wachtwoord opgeven. $form";
					
					}else
						echo "Je moet een gebruikersnaam opgeven. $form";			
		}else {
		echo $form;	
}

}else{
header('location: ../../admin.php');
}
?>
 
Zet error reporting op 1(voor errors), zorg dat je een db verbinding hebt anders werkt mysql_real_escape_string niet. Ook kun je mysql_real_escape_string omzeilen. Wanneer je dit als beveiliging gebruikt *** ik daar zo doorheen(sorry voor mijn taalgebruik). Zoek eens op 'salt', 'ssl', 'md5 hacked', 'session hijacking', 'SQL injection'.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan