PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Fragen zum Login-Script (https://www.php-resource.de/forum/php-developer-forum/92072-fragen-zum-login-script.html)

webdream 21-05-2008 09:10

Fragen zum Login-Script
 
Hallo!
Ich habe ein paar Seiten durch Benutzername & Kennwort geschützt.
Auf der "Kontrollseite" checke ich, ob Benutzername & Kennwort OK sind und starte dann eine Session und setze die Variablen von Benutzername und Kennwort in die Session.

PHP-Code:

session_start(); 
$_SESSION["Kennwort"] = "$Kennwort";
$_SESSION["Benutzername"] = "$Benutzername"

Auf allen "geschützten" Seiten setze ich am Anfang den folgenden Wert um die Seiten zu schützen:
PHP-Code:

session_start();
if(!
session_is_registered(Benutzername)){
header("location:index.php");
}
#jetzt kommt die seite.... 

Wenn die Variable Benutzername also nicht gesetzt ist, wird der Besucher zu index.php geschickt.

Soweit läuft das auch, aber zwei Fragen bleiben:

1. Ich erhalte auf den geschützten Seiten die Meldung
PHP-Code:

Notice: Use of undefined constant Benutzername assumed 'Benutzername' ...
#Zeilenangabe ist gleich dem oben genannten Script 
#if(!session_is_registered(Benutzername)){ 

Was ist falsch?

2. Ist das Ganze einigermaßen sicher? Oder seht ihr Probleme? Von einem massiven Angriff will ich mal nicht sprechen - die Seiten sind nur einigen bekannt - nicht öffentlich.

Besten Dank!!

MelloPie 21-05-2008 09:15

also erstmal zur Meldung
session_is_registered(Benutzername) da Du keine quotes für Benutzername verwendest wird davon ausgegangen, dass es sich um eine konstante handelt...

btw. solltest Du $_SESSION nicht mit session_is_registered() arbeiten
rtfm :-P

webdream 21-05-2008 09:17

danke.
Zitat:

Original geschrieben von MelloPie
btw. solltest Du $_SESSION nicht mit session_is_registered() arbeiten
rtfm :-P [/B]
sondern mit
if(isset($_SESSION['VARNAME']))
oder ??

case 21-05-2008 09:18

Hallo


Also erstmal würde ich beim setzen der Sessionvariablen $Benutzername und $Kennwort nicht in Anführungsstriche setzen... Das geht zwar, schmeißt keinen Fehler ist aber unschön.

Und dann musst du natürlich Anführungsstriche in der funktion benutzen, damit php weiß, dass es ein String ist, sonst wird erst geschaut ob es die Konstatne Benutzername gibt. also:

PHP-Code:

session_is_registered('Benutzername'


Kropff 21-05-2008 09:23

und niemals passwörter in einer session speichern!

peter

PHP-Desaster 21-05-2008 15:28

OffTopic:
Zitat:

und niemals passwörter in einer session speichern!
Warum?

Kropff 21-05-2008 15:30

Zitat:

Original geschrieben von PHP-Desaster
OffTopic:
Warum?

OffTopic:
session-hijacking


peter

Griecherus 21-05-2008 15:32

Zitat:

Original geschrieben von PHP-Desaster
OffTopic:
Warum?

Wozu solch kritische Daten in der Session abstellen, wenn nicht unbedingt nötig? Und mir fällt spontan nicht ein, warum ich das Passworts eines Benutzers in einer Session haben wollte. Unnötiges Sicherheitsrisiko.

Grüße

onemorenerd 21-05-2008 16:18

Ich stimme Griecherus zu. Der User gibt sein Passwort nur beim Login ein, später hat man also gar nichts mit dem man das PW in der Session vergleichen könnte. Einzige denkbare Ausnahme ist die Passwort-Ändern-Funktion mit Eingabe des alten Passworts. Da kann der Vergleich aber direkt in der SQL-Query eingebaut werden.

@Kropff: Bei Session Hijacking ist es egal, ob das PW in der Session steht. Ich sehe den Zusammenhang nicht. :confused:

PHP-Desaster 21-05-2008 20:18

Zitat:

Ich stimme Griecherus zu. Der User gibt sein Passwort nur beim Login ein, später hat man also gar nichts mit dem man das PW in der Session vergleichen könnte. Einzige denkbare Ausnahme ist die Passwort-Ändern-Funktion mit Eingabe des alten Passworts. Da kann der Vergleich aber direkt in der SQL-Query eingebaut werden.
Da stimme ich definitiv auch zu, ich habe mir aber gedacht, das Kropff nicht hierauf abzielt! Solche Daten gehören eh nicht in die Session!

Zitat:

@Kropff: Bei Session Hijacking ist es egal, ob das PW in der Session steht. Ich sehe den Zusammenhang nicht. :confused:
Richtig, meist ist der User eh eingeloggt, wenn die Session übernommen wird. Und wenn du den Inhalt der Session nirgendwo ausgibst (Passwörter eh nie im Klartext ausgeben), ist es ziemlich egal, ob das Passwort drin steht oder nicht.

TobiaZ 21-05-2008 20:45

Zitat:

Und wenn du den Inhalt der Session nirgendwo ausgibst (Passwörter eh nie im Klartext ausgeben), ist es ziemlich egal, ob das Passwort drin steht oder nicht.
Wenn man das Passwort nicht verwendet, braucht man es auch nicht reinschreiben. (Ja, ich habe verwendet und nicht ausgibt geschrieben. ;) )

PHP-Desaster 21-05-2008 22:12

Zitat:

Wenn man das Passwort nicht verwendet, braucht man es auch nicht reinschreiben.
Zitat:

Solche Daten gehören eh nicht in die Session!
Wie ich sagte ;)

Blackgreetz 21-05-2008 22:32

Passt gerade so zum Thema:

Wie würdet ihr ein Auto-Login realisieren?
Statt dem Passwort ein Zufallshash für den User erstellen und ihn daran erkennen - oder doch das verschlüsselte PW?

mfg

UzumakiNaruto 21-05-2008 22:40

cookie mit einem hash aus benutzername und password .. somit kann KEINER was damit anfangen

bsp:
Benutzername: test_user_name
Password: test_password

md5 Werte:
Benutzername: 8dfafdd20b962f7900136661823f921b
Password: 1a4d7a1d27600bdb006f9d126a4c4a81

vllt mit beiden werten ein md5 hach erzeugen
(8dfafdd20b962f7900136661823f921b1a4d7a1d27600bdb006f9d126a4c4a81)

82c9c582f81ea97c2c31192b1e0a3087 << das wäre das ergebnis .. mit so einem cookie kann keiner was anfangen .. natürlich sollte sich keiner das cookie klauen ... aber das ist ja immer so ein problem mit auto-logins

Blackgreetz 21-05-2008 22:58

Zitat:

Original geschrieben von UzumakiNaruto

82c9c582f81ea97c2c31192b1e0a3087 << das wäre das ergebnis .. mit so einem cookie kann keiner was anfangen .. natürlich sollte sich keiner das cookie klauen ... aber das ist ja immer so ein problem mit auto-logins

Genau das meine ich ja, aber was ist, wenn der User vlt ein Passwort benutzt, was in einer Rainbow Tab. drin ist?
Deshalb dacht ich vlt an einen zufallshash, sodass man im falle des klauens, zwar automatisch eingeloggt ist(wie auch bei username + pw), aber nicht die chance hat das pw zu ändern, weil er ja nichtmal den hash kennt..

mfg


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:45 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG