Scriptsicherheit erhöhen

brainsucker

Erfahrenes Mitglied
Hallo zusammen, ich habe folgende Frage an Euch:

Ich habe ein einfaches Login Script geschrieben. Dieses sieht (vereinfacht) so aus:

PHP:
<form method="post" action="login.php" name="form">
<input type="text" name="user">
<input type="password" name="pw">
<input type="submit" name="Login" value="Einloggen">
</form>


// login.php:

$user 	= $_REQUEST[user];
$passwd = $_REQUEST[pw];
$button = $_REQUEST[Login];

if(isset($button))
	{
	$sql = mysql_query("Select * from benutzer where username = '$user' and passwort = '$passwd'")
		$daten = mysql_fetch_assoc($sql);

		if($daten[user_id] != "")
			{
			echo	"<meta http-equiv=\"refresh\" content=\"0; URL=admincenter.php\">";	
			}
		else
			{
			echo "Falscher Login";
			}
	}
//=====================================

Das ganze ist wie gesagt vereinfacht dargestellt. Funktionieren tut das alles wunderbar. Nun aber zu meiner Frage:
Das Script ist ja anfällig gegen SQL Injection. Es gibt hierfür ja aber die Funktion mysql_real_escape_string. Wie
müsste ich diese einsetzen damit mein Script sicher gegen solche Angriffe wird. Antworten wie google fragen etc.
bringen mich nicht sonderlich weiter. Ein Beispiel anhand meines Codings + vielleicht 1,2 Sätze Erklärung wären
hingegen super! Würde mich freuen wenn mir jemand helfen könnte.
 
PHP:
$user 	= mysql_real_escape($_REQUEST[user]);
$passwd = mysql_real_escape($_REQUEST[pw]);
$button = mysql_real_escape($_REQUEST[Login]);

alle Variablen so bearbeiten bevor sie in der mysql_query zusammengebaut werden.
 
Wenn das Passwort und der Benutzername keine Sonderzeichen enthalten dürfen,
kannst du es so abfragen:
PHP:
$user = ( isset($_POST['user']) AND ctype_alnum($_POST['user']) ) ? mysql_real_escape_string($_POST['user']) : "";
$passwd = ( isset($_POST['passwd']) AND ctype_alnum($_POST['passwd']) ) ? mysql_real_escape_string($_POST['passwd']) : "";
$button = isset($_POST['Login']) ? $_POST['Login'] : "";
 
Kann das „admincenter.php“ direkt aufgerufen werden beziehungsweise ist ein Zugriff ohne Anmeldung möglich?
 
Hallo Gumbo,

nein das ist nicht möglich. In dem LoginScript wird noch eine Session Variable gesetzt, die im Admincenter und den darunterliegenden Seiten geprüft wird. Wenn die Variable nicht gesetzt ist wird eine entsprechende Fehlermeldung ausgeworfen
 
Zurück