Login Script - ist es sicher?

Diskutiere Login Script - ist es sicher? im Web & Grafik Forum im Bereich Internet & Telekomunikation Forum; Hallo, Ich bin dabei mir einen Login zu coden. Jetzt hab ich die Frage, ob ihr mir sagen könnt, ob es sicher ist oder ob ich etwas verändern...
  • Login Script - ist es sicher? Beitrag #1
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Hallo,

Ich bin dabei mir einen Login zu coden. Jetzt hab ich die Frage, ob ihr mir sagen könnt, ob es sicher ist oder ob ich etwas verändern könnte, um eine größere Sicherheit zu erreichen? hier mein Code:

PHP:
<?php
session_start();
if (isset($_POST['benutzer']))
{
 include "config.php";
 $verbindung = mysql_connect($db_host,$db_username,$db_password)OR die(mysql_error());
					  mysql_select_db($db_name) OR die(mysql_error());
				$user = $_POST['benutzer'];	  
	$db_row = mysql_db_query($db_name, "SELECT benutzer, psw FROM admin WHERE benutzer ='$user'") OR die (" </br>Query failed : ".mysql_error());
                   while($daten = mysql_fetch_array($db_row))
						{
						 $benutzer=stripslashes($daten['benutzer']);	
						 $psw=stripslashes($daten['password']);			
						 }
						 $_SESSION['benutzer'] = $_POST['benutzer'];
						 $_SESSION['psw'] = $_POST['psw'];	 
			if ($_SESSION['benutzer'] == "$benutzer" && $_SESSION['psw']== "$psw")
				{
				echo"Hallo,".$_SESSION['benutzer'];
				echo"<a href='admin/menu.php'>Adminmenu</a><br>";
				echo"<a href='login1.php'>Ausloggen</a><br>";
				}
				else
				{
				echo "Dein Benutzername oder dein Passwort sind falsch!";
				}
		
		}
include "session.php";
?>

Grüße Pflaume
 
  • Login Script - ist es sicher? Beitrag #2
fox99

fox99

Bekanntes Mitglied
Dabei seit
27.11.1999
Beiträge
3.948
Reaktionspunkte
27
Ort
Omicron Persei 8
1. du solltest auf jedenfall mysql_real_escape_string verwenden, wenn du eingaben von benutzern in den query einbaust, da es sonst möglich ist, dir bösen sql-code unter zu schieben und auszuführen.

2. es scheint so, als ob du in der datenbank die passwörter im klartext speicherst. sollte jemand zugriff auf die db bekommen, hat er auch gleich alle pw. besser du speicherst nur einen hash-wert von den pw.
 
  • Login Script - ist es sicher? Beitrag #3
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
zu 2.) Das Passwort ist via md5() verschlüsselt in der Datenbank.

zu 1.)

könntest du das genauer erklären ih weiß nicht was du meinst.

aber danke für die schnelle hilfe.
 
  • Login Script - ist es sicher? Beitrag #4
fox99

fox99

Bekanntes Mitglied
Dabei seit
27.11.1999
Beiträge
3.948
Reaktionspunkte
27
Ort
Omicron Persei 8
zu 2.) dann seh ich gerade die stelle nicht, wo du die benutzeringabe von dem pw mit md5() bearbeitest. wobei md5() nicht mehr sicher ist. vielleicht kannst du auch einen anderen hash-algo verwenden. ein salted hash bringt sicher auch ein wenig.

zu 1.)
"SELECT benutzer, psw FROM admin WHERE benutzer ='$user'"
was passiert, wenn z.b. $user = "'; drop table admin;" ist?
wenn du vorher $user durch mysql_real_escape_string() schickst, wird das ' maskiert und kann nicht mehr benutzt werden, um dir code unter zu jubeln.
 
  • Login Script - ist es sicher? Beitrag #5
the_viper

the_viper

Bekanntes Mitglied
Dabei seit
27.11.2000
Beiträge
1.977
Reaktionspunkte
0
der abschnitt sollte vielleicht so

PHP:
else 
                { 
                echo "Dein Benutzername oder dein Passwort sind falsch!"; 
                die();
                }

weil session.php sonst auch bei falschem benutzer included wird.
und wie die vorgänger schon sagten, arbeite mit escapes, oder jage wenigstens addslashes() über die variablen, die du im SQL query reinschreibst. und mindestens MD5, oder stärkere hashes statt klartextpasswörter sind das a und o.
 
  • Login Script - ist es sicher? Beitrag #6
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
das ist so. Das Passwort ist von mir selbst mit PHPmyAdmin in die Datenbank eingetragen worden. und mit md5() verschlüsselt.

dann hatte ich das im script so:
PHP:
if ($_SESSION['benutzer'] == "$benutzer" && md5($_SESSION['psw'])== "$psw")

aber hierbei hat er mir immer gesagt, mein passwort sei falsch. wenn ich das md5() wegmache arbeitet das script richtig.

welche andere Methode sollte ich wählen um zu verschlüsseln?Evtl ein Programm zum verschlüsseln erstellen?

So habs mal überarbeitet:
PHP:
<?php
session_start();
if (isset($_POST['benutzer']))
{
 include "config.php";
 $verbindung = mysql_connect($db_host,$db_username,$db_password)OR die(mysql_error());
					  mysql_select_db($db_name) OR die(mysql_error());
				$user = $_POST['benutzer'];	  
	$db_row = mysql_db_query($db_name, "SELECT benutzer, psw FROM admin WHERE benutzer ='$user'",mysql_real_escape_string($user)) OR die (" </br>Query failed : ".mysql_error());
                   while($daten = mysql_fetch_array($db_row))
						{
						 $benutzer=stripslashes($daten['benutzer']);	
						 $psw=stripslashes($daten['password']);			
						 }
						 $_SESSION['benutzer'] = $_POST['benutzer'];
						 $_SESSION['psw'] = $_POST['psw'];	 
			if ($_SESSION['benutzer'] == "$benutzer" && $_SESSION['psw']== "$psw")
				{
				echo"Hallo,".$_SESSION['benutzer'];
				echo"<a href='admin/menu.php'>Adminmenu</a><br>";
				echo"<a href='login1.php'>Ausloggen</a><br>";
				}
				else
				{
				echo "Dein Benutzername oder dein Passwort sind falsch!";
				die();
				}
		
		}
include "session.php";
?>
 
Zuletzt bearbeitet:
  • Login Script - ist es sicher? Beitrag #7
the_viper

the_viper

Bekanntes Mitglied
Dabei seit
27.11.2000
Beiträge
1.977
Reaktionspunkte
0
wenn ich mir den code so anschaue, und ihn interpretiere , würde ich ihn eher so schreiben:
PHP:
<?php
session_start();
if (isset($_POST['benutzer']))
{
 include "config.php";
 $verbindung = mysql_connect($db_host,$db_username,$db_password)OR die(mysql_error());
					  mysql_select_db($db_name) OR die(mysql_error());
				$user = addslashes( $_POST['benutzer']);	  
	$db_row = mysql_db_query($db_name, "SELECT benutzer, psw FROM admin WHERE benutzer ='$user'",mysql_real_escape_string($user)) OR die (" </br>Query failed : ".mysql_error());
                   while($daten = mysql_fetch_array($db_row))
						{
						 $benutzer=stripslashes($daten['benutzer']);	
						 $psw=stripslashes($daten['password']);			
						 }
						 $_SESSION['benutzer'] = $benutzer;
						 $_SESSION['psw'] = $_POST['psw'];	 
			if ( ($_SESSION['benutzer'] == "$benutzer") && ( md5($_POST['psw'])== $psw) )
				{
				echo"Hallo ".$_SESSION['benutzer'];
				echo"<a href='admin/menu.php'>Adminmenu</a><br>";
				echo"<a href='login1.php'>Ausloggen</a><br>";
				}
				else
				{
				
				die("Dein Benutzername oder dein Passwort sind falsch!");
				}
		
		}
include "session.php";
?>
 
  • Login Script - ist es sicher? Beitrag #8
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Hab jetzt mal den code von dir übernommen. Leider kommt ein Fehler mit dem ich nix anfangen kann.

Code:
Warning: mysql_db_query(): supplied argument is not a valid MySQL-Link resource in /usr/export/www/vhosts/funnetwork/hosting/thomasneu/Gästebuch/login/login.php on line 17
Query failed :
 
  • Login Script - ist es sicher? Beitrag #9
Fritte

Fritte

Bekanntes Mitglied
Dabei seit
16.05.2008
Beiträge
964
Reaktionspunkte
0
Ort
C:/system32
Fehler in Zeile 17 ???
 
  • Login Script - ist es sicher? Beitrag #10
the_viper

the_viper

Bekanntes Mitglied
Dabei seit
27.11.2000
Beiträge
1.977
Reaktionspunkte
0
in zeile 17 ist aber nix mit fehler ... wenn ich richtig zähle gibts da nur ein
{

poste mal bitte das nach query failed.
 
  • Login Script - ist es sicher? Beitrag #11
Fritte

Fritte

Bekanntes Mitglied
Dabei seit
16.05.2008
Beiträge
964
Reaktionspunkte
0
Ort
C:/system32
War es in Zeile 17 ????
 
  • Login Script - ist es sicher? Beitrag #12
fox99

fox99

Bekanntes Mitglied
Dabei seit
27.11.1999
Beiträge
3.948
Reaktionspunkte
27
Ort
Omicron Persei 8
es dürfte diese zeile sein:
Code:
    $db_row = mysql_db_query($db_name, "SELECT benutzer, psw FROM admin WHERE benutzer ='$user'",mysql_real_escape_string($user)) OR die (" </br>Query failed : ".mysql_error());

was macht das "mysql_real_escape_string($user)" im aufruf von "mysql_db_query"?

bei
1. du solltest auf jedenfall mysql_real_escape_string verwenden, wenn du eingaben von benutzern in den query einbaust, da es sonst möglich ist, dir bösen sql-code unter zu schieben und auszuführen.
dachte ich eher an sowas:
Code:
$user = mysql_real_escape_string($user);
$db_row = mysql_db_query($db_name, "SELECT benutzer, psw FROM admin WHERE benutzer ='$user'") OR die (" </br>Query failed : ".mysql_error());
 
  • Login Script - ist es sicher? Beitrag #13
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
oO Ok danke ja ich hatte das HTML Gerüst nicht mitgepostet SRY fox99 hatte recht.

Ja das wird es wohl sein. Ich hatte mit
PHP:
mysql_real_escape_string()

Und habs im PHP Manual nachgelesen und da war das auch so geschrieben.
 
  • Login Script - ist es sicher? Beitrag #14
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Aber das Problem mit der verschlüsselung bleibt. Das passwort und der Benutzername sind in der Datenbank. Das passwort mit md5() verschlüsselt. wenn ich das ganze so schreib:
PHP:
 if ( ($_SESSION['benutzer'] == "$benutzer") && ( md5($_POST['psw'])== $psw) )

kommt passwort ist falsch.Schreib ich es aber so:

PHP:
 if ( ($_SESSION['benutzer'] == "$benutzer") && $_POST['psw']== $psw) )

funktioniert alle einwandfrei.

SRY für doppelpost die editir funktion hat gesagt ich kann nur inerhalb von 15 minuten editieren.
 
  • Login Script - ist es sicher? Beitrag #15
fox99

fox99

Bekanntes Mitglied
Dabei seit
27.11.1999
Beiträge
3.948
Reaktionspunkte
27
Ort
Omicron Persei 8
beim 2. vergleichst du das vom benutzer eingegebene klartextpasswort mit dem was in der datenbank steht. hast du vielleicht das passwort selber im klartext in der datenbank stehen? beim eintragen von passwörtern müsstest du diese ebenfalls durch md5() schicken. so z.b.:

Code:
insert into admin (benutzer, psw) values ('fox99', md5('passwort'));
 
  • Login Script - ist es sicher? Beitrag #16
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Eigentlich steht es verschlüsselt in der Datenbank. vll liegt es an meinen tabellen einstellung? hier mal die Tabelle:
dat.JPG
 
  • Login Script - ist es sicher? Beitrag #17
Pflaume91

Pflaume91

Bekanntes Mitglied
Dabei seit
28.10.2007
Beiträge
395
Reaktionspunkte
0
Ort
ja das ist eine Lange geschichte
Mir ist eben aufgefallen, dass mein Loginscript nicht richtig arbeitet. Wenn ich mich einlogge kommt die Meldung, mein Passwort oder mein Name seien falsch. Die Daten sind aber richtig, nur muss ich wenn ich mich eingeloggt die Seite neu Laden, damit mir die Links (die geschütztz sind) angezeigt werden.

Hat einer ne Idee woran das liegt?
 
  • Login Script - ist es sicher? Beitrag #18
the_viper

the_viper

Bekanntes Mitglied
Dabei seit
27.11.2000
Beiträge
1.977
Reaktionspunkte
0
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
       "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
.
.
.
</head>
<body>
.
.
.
</body>
</html>
 
  • Login Script - ist es sicher? Beitrag #20
the ubm

the ubm

Senior Moderator
Dabei seit
29.05.2005
Beiträge
9.464
Reaktionspunkte
1
wobei md5() nicht mehr sicher ist. vielleicht kannst du auch einen anderen hash-algo verwenden. ein salted hash bringt sicher auch ein wenig.
MD5 ist in Bezug auf die Kollisionsresitenz nicht mehr sicher, d.h. man kann durch ein rechnerisches Verfahren eine 2. Nachricht finden, die denselben MD5 Hash zur Folge hat.
Zum salted hash: Er bringt nicht nur ein wenig mehr, sondern sehr viel mehr. Es gibt zahlreiche Seiten auf denen man sich Regenbogentabellen (Rainbowtables) für MD5 runterladen kann. Damit findet man das Passwort ruckzuck. Das ist aber kein Problem von MD5 auch für SHA-1 oder SHA-512 lassen sich solche Tabellen erstellen. Hier kommen dann die gesalzenen Hashes (salted) ins Spiel. Im Prinzip wird dadurch das Passwort durch einen festen Wert verlängert. Die Anzahl der möglichen Kombinationen steigt dadurch rasant an und es können praktisch nicht mehr solche Tabellen erzeugt werden.
Sollte also jemand die Datenbank stehlen, sind die Passwörter nur mit gesalzenen Hashes sicher. Selbst wenn diese Zeichenfolge bekannt wird, bleibt das Passwort gegenüber Rainbowtables sicher.
Du musst nur dafür sorgen, dass man sich nicht direkt mit dem MD5-Hash am Server anmelden kann.

Zum Rest des PHP-Skriptes kann ich leider nichts beitragen.
 
Thema:

Login Script - ist es sicher?

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben