WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 19.04.2004, 21:51   #1
Satan_666
Inventar
 
Registriert seit: 03.09.2000
Beiträge: 4.010


Standard Session mit PHP?

Hi, liebe Forenten!

Ich habe ein kleines Verständnisproblem mit PHP-Session's. Kurz der Ablauf:


In "index.php" existiert im Wesentlichen nur ein HTML-Formular zwecks Eingabe von User und Passwort, aufgerufen wird bei submit die Datei "index2.php".



In "index2.php" passiert folgendes (Auszug aus dem Quelltext):
<?php
include("mysqldb.php"); // PHP-Klasse für MySQL-Datenbank
include("session.php");
// User und Kennwort in der Session registrieren
session_register("user");
session_register("passwort");
if ($user=="webma"):
header("Location: webma.php"); //wenn als webma angemeldet -> webma.php aufrufen!
exit;
endif;
if ($user=="admin"):
header("Location: admin.php"); //wenn als admin angemeldet -> admin.php aufrufen!
exit;
endif;
?>
<html>
[...]
</html>



In der Datei "session.php" wird die session gestartet und die Zugangsdaten werden geprüft (Quelltext):
<?php
session_start();
$db->query("SELECT name,vname FROM tbl_mitarbeiter WHERE user='$user' and passwort=PASSWORD('$passwort')");
if (!list($name,$vname) = $db->data()):
header("Location: logout.php"); //wenn nicht in DB, dann zurück zur anmeldung
exit;
endif;
?>



Die Dateien "webma.php" und "admin.php" sind von der Logik identisch, es werden nur die Daten von unterschiedlichen MySQL-Tabellen angezeigt. Nachfolgend ein Auszug aus dem Quelltext (in diesem Fall admin.php):
<?php
session_start();
if ($user!="admin"):
header("Location: logout.php"); //logout.php zerstört die session mit session_destroy(); und ruft danach index.php auf
exit;
endif;
include("mysqldb.php");
?>
<html>
[...]
</html>
Nach dem session_start(); prüfe ich, ob die Seite vom User "admin" aufgerufen worden ist - wenn nicht, geht es zur Anmeldung retour (für den Fall, dass jemand diese Seite aufruft, ohne über die Anmeldung zu gehen). Im HTML-Teil befindet sich eine Menü-Leiste, die verschiedene .php-Dateien aufruft - und das Auslesen einer MySQL-Tabelle mit Anzeige der Daten (als Formular), was zum Ändern von Daten dient. Der Aufruf vom Menü her erfolgt ganz normal mit "....". Die jeweils aufgerufenen Seiten beginnen exakt so wie die "webma.php" bzw. "admin.php".


Mein Unverständnis: im Falle von "admin.php" funktioniert alles bestens. Wenn ich im Menü eine Seite aufrufe, dann bekomme ich die Seite angezeigt, da scheinbar durch die Session die Informationen "user" und "passwort" transportiert werden; auch im Falle dessen, dass ich ein Formular abschicke. Seltsamerweise ist es bei "webma.php" definitiv NICHT der Fall - soll heißen, dass in $user einen Leerstring enthält. Warum das dort anders ist, weiß ich nicht....


Vermutlich kommt es daher, dass mir generell das Verständnis fehlt, wie eine Session mit der Sitzung zusammen hängt. Mir ist absolut nicht klar, wie PHP dies löst, daher tu ich mir mit der Fehlersuche recht schwer. Vielleicht kann mir jemand Klarheit verschaffen....?


Many Thanks!


____________________________________
Für ein friedliches Zusammenleben im Forum werde ich ab sofort keine Trolle mehr füttern, und zwar unabhängig von der Sinnhaftigkeit ihrer Wortmeldungen.
Satan_666 ist offline   Mit Zitat antworten
Alt 20.04.2004, 18:04   #2
Satan_666
Inventar
 
Registriert seit: 03.09.2000
Beiträge: 4.010


Standard

Danke - hat sich geklärt unterdessen!

____________________________________
Für ein friedliches Zusammenleben im Forum werde ich ab sofort keine Trolle mehr füttern, und zwar unabhängig von der Sinnhaftigkeit ihrer Wortmeldungen.
Satan_666 ist offline   Mit Zitat antworten
Alt 20.04.2004, 18:20   #3
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

ich würde mal sagen, das ganze ist nicht sicher gegen sql-injection.

-hannes
Biri ist offline   Mit Zitat antworten
Alt 20.04.2004, 20:02   #4
Potassium
Inventar
 
Registriert seit: 06.03.2003
Alter: 37
Beiträge: 3.954

Mein Computer

Standard

Zitat:
Original geschrieben von Biri
ich würde mal sagen, das ganze ist nicht sicher gegen sql-injection.

-hannes
why?
Potassium ist offline   Mit Zitat antworten
Alt 20.04.2004, 22:22   #5
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

weil ein sql-string zusammengesetzt wird, der "user" und "passwort" mittels stringverknüpung einfügt.

hmmm - o.k., aus dem script ist nicht ersichtlich, woher die parameter $user und $passwort kommen.
wenn die aus einem eingabefeld kommen, ist es imho. ein risko.

als user kann man ja z.B. "' and 1=1 --" angeben.
so ginge das jedenfalls beim sql-server - bei mysql sind die quotings glaub ich ein doppeltes ", kommentar weiß ich net.
Biri ist offline   Mit Zitat antworten
Alt 21.04.2004, 18:38   #6
Satan_666
Inventar
 
Registriert seit: 03.09.2000
Beiträge: 4.010


Standard

hi!

für diejenigen, denen es interessiert: ich habe fälschlicher weise die variable $user mehrfach verwendet und somit den inhalt in der session zerstört!


____________________________________
Für ein friedliches Zusammenleben im Forum werde ich ab sofort keine Trolle mehr füttern, und zwar unabhängig von der Sinnhaftigkeit ihrer Wortmeldungen.
Satan_666 ist offline   Mit Zitat antworten
Alt 22.04.2004, 17:08   #7
SNo0py
Inventar
 
Registriert seit: 08.02.2000
Beiträge: 1.696


Standard

Arbeitest du mit
PHP-Code:
register_globals On 
???

Aaaaaaaaaaaaaaaaaaaaaaaaaaarg... Fehler!!!
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you.
SNo0py ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:04 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag