Registrieren  •  Login 
  
 
im Forum


 FAQ   Mitgliederliste   Benutzergruppen   Teamseite   Suchen 

login

 
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 30.04.2007, 23:19    Titel: login

Ich bitte hier NICHT um Kommentare zur Sicherheit dieses Login-Systems, sondern um eine Problemlösung.

Wenn ich mich auf http://www.raphaelmichel.de/login.php mit User "tester" und Passwort "test" einlogge kommt ein Fehler. Wieso?
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
$titel 
'Login';
if(
$_POST['login']){
$name $_POST['name'];
$pass $_POST['pass'];
$query mysql_query("SELECT * FROM `members` WHERE username = '$name'"); 
$things mysql_fetch_assoc($query);
if(
mysql_num_rows($query) > 0){
$meldung "<b>Fehler:</b> User nicht gefunden";
}else{
if(
$_POST['pass'] == $things['pass']){
setcookie("PW"$pass);
setcookie("USERNAME"$name);
setcookie("ID"$things['id']);
setcookie("LOGGED_IN""1");
$meldung 'Login erfolgreich. Sie werden in 5 Sekunden zur Startseite weitergeleitet.';
$zusatz '<meta http-equiv="refresh" content="5; URL=index.php">';
}else{
$meldung '<b>Fehler:</b> Benutzer inaktiv oder Passwort falsch.'//Dies wird ausgegeben!!!
}
}
}
include(
'header.php');
echo 
'<h1>Login</h1>';
echo 
$meldung;
?>
<form action="" name="login" method="POST">
Name: <input name="name"><br />
Passwort: <input name="pass" type="password"><br />
<input type="submit" name="login" value="Login"><br />
</form>
<b>Ab hier <u>müssen</u> Cookies aktiviert sein!</b>
<?php
include('footer.php');
?>


Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von rami.
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13952
Wohnort: Wien

BeitragVerfasst am: 01.05.2007, 10:15    Titel: Re: login

Also bei mir kommt gar nichts, ich sehe die gleiche Seite nochmals Wink
rami hat Folgendes geschrieben:
Ich bitte hier NICHT um Kommentare zur Sicherheit dieses Login-Systems, sondern um eine Problemlösung.

Sorry, aber zu einem guten Support gehören auch Tipps zur Sicherheit, und die muss ich loswerden:

Verwende addslashes() und speicher die Daten nicht in Cookies, das ist extrem unsicher. Für Loginsysteme verwendet man normalerweiße die Session-Funktionen von PHP: http://at2.php.net/manual/de/ref.session.php


MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 01.05.2007, 18:04    Titel:

okay, ich werde auf Sessions umsteigen.
Ich sehe die Seite nochmal aber mit: Fehler: Benutzer inaktiv oder Passwort falsch.

//edit: so sicherer?
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php 
session_start
();
session_register("logged_in");
$titel 'Login'
if(
$_POST['login']){ 
$name $_POST['name']; 
$pass $_POST['pass']; 
$query mysql_query("SELECT * FROM `members` WHERE username = '$name'");  
$things mysql_fetch_assoc($query); 
if(
mysql_num_rows($query) > 0){ 
$meldung "<b>Fehler:</b> User nicht gefunden"
$_SESSION['logged_in'] = array("login" => "0""user" => "gast""pass" => "-");
}else{ 
if(
$_POST['pass'] == $things['pass']){ 
$_SESSION['logged_in'] = array("login" => "1""user" => $name"pass" => $pass);
$meldung 'Login erfolgreich. Sie werden in 5 Sekunden zur Startseite weitergeleitet.'
$zusatz '<meta http-equiv="refresh" content="5; URL=index.php">'
}else{ 
$_SESSION['logged_in'] = array("login" => "0""user" => "gast""pass" => "-");
$meldung '<b>Fehler:</b> Benutzer inaktiv oder Passwort falsch.'//Dies wird ausgegeben!!! 


echo 
$things['pass'], '  '$_GET['pass']; 

include(
'header.php?session=no'); 
echo 
'<h1>Login</h1>'
echo 
$meldung
?> 
<form action="" name="login" method="get"> 
Name: <input name="name"><br /> 
Passwort: <input name="pass" type="password"><br /> 
<input type="submit" name="login" value="Login"><br /> 
</form>
<?php 
include('footer.php'); 
?>


Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von rami.
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
P@k.l
Ehemaliger
Ehemaliger



Anmeldedatum: 17.06.2006
Geschlecht: Männlich
Beiträge: 340
Wohnort: Köln

BeitragVerfasst am: 02.05.2007, 14:36    Titel:

Habe den Fehler gefunden.
Du kannst keine Querys mit mysql_num_rows() zählen sondern nur results.
D.h. dein Script muss etwa so aussehen:
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php 
session_start
();
session_register("logged_in");
$titel 'Login'
if(
$_POST['login']){ 
  
$name $_POST['name']; 
  
$pass $_POST['pass']; 
  
$query mysql_query("SELECT * FROM `members` WHERE username = '$name'");  
  
$things mysql_fetch_assoc($query); 
  if(
mysql_num_rows($things) <= 0) { 
    
$meldung "<b>Fehler:</b> User nicht gefunden"
    
$_SESSION['logged_in'] = array("login" => "0""user" => "gast""pass" => "-");
  } else { 
    if(
$_POST['pass'] == $things['pass']) { 
      
$_SESSION['logged_in'] = array("login" => "1""user" => $name"pass" => $pass);
      
$meldung 'Login erfolgreich. Sie werden in 5 Sekunden zur Startseite weitergeleitet.'
      
$zusatz '<meta http-equiv="refresh" content="5; URL=index.php">'
    } else { 
      
$_SESSION['logged_in'] = array("login" => "0""user" => "gast""pass" => "-");
      
$meldung '<b>Fehler:</b> Benutzer inaktiv oder Passwort falsch.'//Dies wird ausgegeben!!! 
    

  } 
  echo 
$things['pass'], '  '$_GET['pass']; 

include(
'header.php?session=no'); 
echo 
'<h1>Login</h1>'
echo 
$meldung
?> 
<form action="" name="login" method="get"> 
  Name: <input name="name"><br /> 
  Passwort: <input name="pass" type="password"><br /> 
  <input type="submit" name="login" value="Login"><br /> 
</form>
<?php 
include('footer.php'); 
?>

_________________
Nach oben
Benutzer-Profile anzeigen P@k.l ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 02.05.2007, 20:08    Titel:

also nur <= statt <?
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
P@k.l
Ehemaliger
Ehemaliger



Anmeldedatum: 17.06.2006
Geschlecht: Männlich
Beiträge: 340
Wohnort: Köln

BeitragVerfasst am: 02.05.2007, 20:17    Titel:

Das auch. Aber du hattest in Zeile 10 vorher folgendes stehen:
Code:
if(mysql_num_rows($query) <= 0) {

Du kannst aber auf diesen Weg keine Zeilen zählen, sonder brauchst das Result dafür. Daher hab ich das geändert in
Code:
if(mysql_num_rows($things) <= 0) {

_________________
Nach oben
Benutzer-Profile anzeigen P@k.l ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
Qu4rK
Mitglied
Mitglied



Anmeldedatum: 12.07.2006
Geschlecht: Männlich
Beiträge: 261
Wohnort: Bayreuth

BeitragVerfasst am: 03.05.2007, 15:04    Titel:

Code:
session_register("logged_in");

Das hier solltest du weglassen, wenn du mit $_SESSION Variablen arbeitest.
Ansonsten kann ich dir nur raten keine Passwörter in Sessions zu speichern und deine Variablen immer mit mysql_real_escape_string() zu bearbeiten, bevor du sie zur Datenbank schickst.
Nach oben
Benutzer-Profile anzeigen Qu4rK ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 03.05.2007, 18:08    Titel:

Qu4rK hat Folgendes geschrieben:
Code:
session_register("logged_in");

Das hier solltest du weglassen, wenn du mit $_SESSION Variablen arbeitest.
Ansonsten kann ich dir nur raten keine Passwörter in Sessions zu speichern und deine Variablen immer mit mysql_real_escape_string() zu bearbeiten, bevor du sie zur Datenbank schickst.

schadet session_register? so hab ichs gelernt.
#####
edit: der quelltext sieht jetzt soa us und ich bin nicht weiter als am Anfang.
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php 
session_start
();
session_register("logged_in");
$titel 'Login'
if(
$_POST['login']){ 
$name addslashes(mysql_real_escape_string($_POST['name'])); 
$pass addslashes(mysql_real_escape_string($_POST['pass'])); 
$query mysql_query("SELECT * FROM `members` WHERE username = '$name'");  
$things mysql_fetch_assoc($query); 
if(
mysql_num_rows($things) <= 0){ 
$meldung "<b>Fehler:</b> User nicht gefunden"
$_SESSION['logged_in'] = array("login" => "0""user" => "gast""pass" => "-");
}else{ 
if(
$_POST['pass'] == $things['pass']){ 
$_SESSION['logged_in'] = array("login" => "1""user" => $name"pass" => $pass);
$meldung 'Login erfolgreich. Sie werden in 5 Sekunden zur Startseite weitergeleitet.'
$zusatz '<meta http-equiv="refresh" content="5; URL=index.php">'
}else{ 
$_SESSION['logged_in'] = array("login" => "0""user" => "gast""pass" => "-");
$meldung '<b>Fehler:</b> Benutzer inaktiv oder Passwort falsch.'//Dies wird ausgegeben!!! 


echo 
$things['pass'], '  '$_GET['pass']; 

$session_header 'no';
include(
'header.php'); 
echo 
'<h1>Login</h1>'
echo 
$meldung
?> 
<form action="" name="login" method="POST"> 
Name: <input name="name"><br /> 
Passwort: <input name="pass" type="password"><br /> 
<input type="submit" name="login" value="Login"><br /> 
</form>
<?php 
include('footer.php'); 
?>


Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von rami.
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Qu4rK
Mitglied
Mitglied



Anmeldedatum: 12.07.2006
Geschlecht: Männlich
Beiträge: 261
Wohnort: Bayreuth

BeitragVerfasst am: 03.05.2007, 21:42    Titel:

Zitat:
schadet session_register?

Ich würde mich einfach nicht immer darauf verlassen, dass register_globals auf on steht. Wink
Außerdem steht es doch auf php.net...
Man sollte eben session_register() usw. nicht verwenden, wenn man die Superglobalen Variablen benutzt.

Code:
$pass = addslashes(mysql_real_escape_string($_POST['pass']));

Doppelt Escapen ist übrigens nicht gut, am besten du lässt addslashes() weg.
Nach oben
Benutzer-Profile anzeigen Qu4rK ist derzeit offline Private Nachricht senden Website dieses Benutzers besuchen
rami
Mitglied
Mitglied



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 759

BeitragVerfasst am: 04.05.2007, 15:23    Titel:

okay.
Nach oben
Benutzer-Profile anzeigen rami ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht teilnehmen.
Du kannst Dateien in diesem Forum nicht hochladen.
Du kannst Dateien in diesem Forum nicht herunterladen.

 

Alle Zeiten sind GMT + 2 Stunden (Sommerzeit)
Aktuelles Datum und Uhrzeit: 10.04.2020, 01:49
Nach oben
Valid HTML 4.01 Transitional
Valid CSS!
Software based on work from the phpBB-Group  •  Deutsche Übersetzung von phpBB.de

netcup - Internetdienstleistungen
 
 
[ happytec.at | forum.happytec.at | blog.happytec.at | esports.happytec.at | event.happytec.at ]