Sicheres PHP
Re: Sicheres PHP
2 Sachen hätte ich anzumerken:
1. Wie sieht die Loginprep() aus? Da sollte auf jeden Fall mysql_real_escape_string() drin vorkommen
2. Warum gibt diese Funktion 0 (false) zurück, wenn der User eingeloggt ist? Wäre 1 (true) nicht logischer? Hat aber nix mit Sicherheit zutun...
Sonst sieht das ganz okay aus...soweit ich weiß kann der User Sessions, die ja auf dem Server lagern, nicht selber erstellen...müsste also (relativ) sicher sein...
1. Wie sieht die Loginprep() aus? Da sollte auf jeden Fall mysql_real_escape_string() drin vorkommen
2. Warum gibt diese Funktion 0 (false) zurück, wenn der User eingeloggt ist? Wäre 1 (true) nicht logischer? Hat aber nix mit Sicherheit zutun...
Sonst sieht das ganz okay aus...soweit ich weiß kann der User Sessions, die ja auf dem Server lagern, nicht selber erstellen...müsste also (relativ) sicher sein...
Re: Sicheres PHP
Nein, es kommen keine (Variablen)Daten in Berührung mit der Datenbank, also müsste hier mysql_real_escape_string() nicht vorkommen oder?Dubbel hat geschrieben: 1. Wie sieht die Loginprep() aus? Da sollte auf jeden Fall mysql_real_escape_string() drin vorkommen
Code: Alles auswählen
function Loginprep($Name,$Password) {
if(!$connection = mysql_connect("localhost","XXX","XXX")) echo "<p class=\"mal\">Error while connecting to the Database<p>";
else if(!mysql_select_db("XXX")) echo "<p class=\"mal\">Error the Database does not exists<p>";
else if(!$result = mysql_query("SELECT * FROM XXX")) echo "<p class=\"mal\">Error cannot access data<p>";
while($cah = mysql_fetch_object($result)){
if($cah->name == $Name) {
if($cah->password == md5($Password)) {
$_SESSION['username'] = $Name;
$_SESSION['password'] = md5($Password);
$_SESSION['realname'] = $cah->rname;
return 0;
}
}
}
return 1;
}
Re: Sicheres PHP
Die Lösung ist aber ziemlich Datenbanklastig, da sie ja jeden einzelnen User auslesen muss, speichern, PHP überprüfen lassen, usw.
Wenn es nur 1-20 User geben wird, ist das okay (ich weiß ja nicht, wofür das ist ^^), aber bei mehreren ist es schneller, wenn du nur die passenden Einträge ausliest.
Ich mache das immer so:
Das ist bei großen Systemen schneller. Kommt been darauf an, wie wichtig dir Performance ist 
Wenn es nur 1-20 User geben wird, ist das okay (ich weiß ja nicht, wofür das ist ^^), aber bei mehreren ist es schneller, wenn du nur die passenden Einträge ausliest.
Ich mache das immer so:
Code: Alles auswählen
function Loginprep($name,$password)
{
if(!$connection = mysql_connect("localhost","XXX","XXX"))
{
echo "<p class=\"mal\">Error while connecting to the Database<p>";
}
else if(!mysql_select_db("XXX"))
{
echo "<p class=\"mal\">Error the Database does not exists<p>";
}
else
{
$name = mysql_real_escape_string($name);
$password = mysql_real_escape_string($password);
$result = mysql_query("SELECT * FROM `XXX` WHERE `username` = '$name' AND `pwd` = '$password'"))
if (result)
{
while($cah = mysql_fetch_object($result))
{
$_SESSION['realname'] = $cah->rname;
}
$_SESSION['username'] = $Name;
$_SESSION['password'] = md5($Password);
return 0; // obwohl ich hier eigentlich 1 zurückgeben würde
}
}
echo "<p class=\"mal\">Error cannot access data<p>";
return 1;
}

- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Sicheres PHP
Wer Speed haben will, sollte sich die schnell zu erreichenden Daten als Dateien auf die Festplatte legen.Dubbel hat geschrieben:Die Lösung ist aber ziemlich Datenbanklastig, da sie ja jeden einzelnen User auslesen muss, speichern, PHP überprüfen lassen, usw.
Wenn es nur 1-20 User geben wird, ist das okay (ich weiß ja nicht, wofür das ist ^^), aber bei mehreren ist es schneller, wenn du nur die passenden Einträge ausliest.
Das ist bei großen Systemen schneller. Kommt been darauf an, wie wichtig dir Performance ist
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Sicheres PHP
ohje ohje das pw in ner session speichern , nenn ich nicht sicher... vorallem warum? speichert lieber einen generierten code in die session der eindeutig mit den user ist so wird das pw auch nur benötigt wenn man es braucht, den ohne code kann sich kein fremder einlooogen aber mit pw schon
mfg
mfg
Rechtschreibefehler sind gewollt und dienen der Unterhaltung
Re: Sicheres PHP
Ich versteh dich nicht so ganz: Du willst nicht das Passwort in einer Session speichern (die ja quasi ein generierter Code ist, der dann den Zugriff auf eine dazugehörige Datei auf dem Server (!) freigibt), willst aber, dass einen generierten Code darin gespeichert, wird, der den User sofort einloggt? Wo ist der direkte Vorteil zum speichern der User-ID und des Passworts?
Wo ist da der Sinn? Die einzige Gefahr sehe ich darin, dass jemand irgendwie an die Session-Dateien auf dem Server rankommt, aber dann ist eh alles verloren ^^
Oder hab ich irgendetwas übersehen?
Wo ist da der Sinn? Die einzige Gefahr sehe ich darin, dass jemand irgendwie an die Session-Dateien auf dem Server rankommt, aber dann ist eh alles verloren ^^
Oder hab ich irgendetwas übersehen?

- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Sicheres PHP
Du generierst eine zur Sesion bezogene ID, also du nutz z.B Uhrzeit, IP und Nutzername um eine Session ID zu generieren.
Wenn ein angreifer diese ID bekommt, nutzt sie ihm nichts, weil er eine unterschiedliche IP, Uhrzeit etc hat, als in der ID.
So ist die ID trozdem eindeutig und sicher.
Wenn ein angreifer diese ID bekommt, nutzt sie ihm nichts, weil er eine unterschiedliche IP, Uhrzeit etc hat, als in der ID.
So ist die ID trozdem eindeutig und sicher.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: Sicheres PHP
Ja, schon klar.
Aber wo ist das Sicherheitsrisiko, wenn man das Passwort in die Session speichert?
Aber wo ist das Sicherheitsrisiko, wenn man das Passwort in die Session speichert?
Re: Sicheres PHP
wenn die session ausgelesen wir dann haben sie das pw und können sich einloogen so haben sie nur den code
mfg
mfg
Rechtschreibefehler sind gewollt und dienen der Unterhaltung
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Sicheres PHP
Das Passwort läuft ständig - eventuell unverschlüsselt - über die Leitung?Dubbel hat geschrieben:Aber wo ist das Sicherheitsrisiko, wenn man das Passwort in die Session speichert?
Es liegt unverschlüsselt auf der Festplatte?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.