mittels session zugriffsschutz
chrigu
- php
0 netghost0 chrigu0 netghost0 Hanno
0 Sven Rautenberg0 chrigu0 Charlie070 Sven Rautenberg0 chrigu
0 Matthias
hallo zusammen,
ich habe eine seite wo man sich einloggen muss(sessions). damit jetzt nicht jeder x-beliebige auf meine seite kommt, möchte ich die seite schützen, dass nur leute mit gültiger session auf meine seite kommen. auf der login seite wird ein schlüssel in die session eingetragen, wenn alle angaben korrekt waren..
if (isset($_SESSION["schluessel"])) {
echo "Willkommen";
}
else {
echo "Access denied!";
}
kann man das so machen, oder ist das zu unsicher?!
aja auf der folgeseite steht in der url immer die session-id.. ich hab mal gesehen, dass das auch ohne geht, respektive das man die session-id nicht sieht?!
gruss chrigu
ok mit php kenne ich mich zwar nicht aus aber grundsätzliches hierzu:
Die session id in der url erscheint denke ich mal wegen der methode (GET) mit der die folgeseite aufgerufen wurde. bei (POST) erscheint sie nicht.
ich mache das beim logon so:
überprüfe ob username in tabelle steht mittels SQL WHERE [user] = "FORMFELD.USER" dann checke ich mittels if password = "FORMFELD.PASSWORD" und entsprechend initiere ich die Session in dem ich den usernamen eintrage. Damit prüfe ich dann im verlauf der Seiten auch welche daten der User ändern darf etc.
unsicher kann das ganze an der stelle sein, wo du die überprüfung der angaben machst. dazu hast du allerdings nichts gesagt.
"FORMFELD.XXX" bitte in entsprechende Script Sprache übersetzen, ich benutze ASP
netghost
Die session id in der url erscheint denke ich mal wegen der methode (GET) mit der die folgeseite aufgerufen wurde. bei (POST) erscheint sie nicht.
ich rufe die folgeseite so auf: <a href='default.php'>weiter</a>
wie muss ich die aufrufen, damit die session-id nicht in der url steht?!
gruss chrigu
du hast doch ein formular in dem username und password abgfreagt werden da steht eine methode GET oder POST drin
netghost
Du kannst deine Daten auch über MD5 verschlüsseln.
Du wandelst die angaben vor Abschicken in einen MD5
code um und vergleichst ihn mit dem MD5 code in der
Datenbank. Das ist sehr sicher. gib mal MD5 bei Suche
ein und du wirst wissen was ich mein.
Gruß
Hanno
Moin!
Die session id in der url erscheint denke ich mal wegen der methode (GET) mit der die folgeseite aufgerufen wurde. bei (POST) erscheint sie nicht.
ich rufe die folgeseite so auf: <a href='default.php'>weiter</a>
wie muss ich die aufrufen, damit die session-id nicht in der url steht?!
Verwende Cookies, bzw. lass PHP Cookies verwenden. Das kann man an verschiedenen Stellen, z.B. in der php.ini abschalten. Du könntest auch versuchen, ein Session-Cookie künstlich zu setzen, indem du session_name() und session_id() in das Cookie reinschreibst und mit set_cookie() an den Client sendest. Aber es bringt dir keine zusätzliche Sicherheit, es sieht nur etwas besser aus.
- Sven Rautenberg
hallo,
also meinst du, dass ich besser ein cookie verwende als eine session?!
gruss chrigu
» also meinst du, dass ich besser ein cookie verwende als eine session?!
session und cookie schliessen sich nicht aus. das cookie wird clientseitig (also im browser) gespeichert und enthält die session id, die session selber liegt beim server. dort werden dann die "geheimen" daten gespeichert, also dein schlüssel.
der schlüssel darf auf keinen fall beim client gespeichert werden, weil dieser den dann ja ändern, also das login umgehen könnte
Moin!
also meinst du, dass ich besser ein cookie verwende als eine session?!
Nein. Eine Session _ist_ im Prinzip ein Cookie - jedenfalls wird zur Realisierung gerne ein Cookie verwendet, die Alternative in PHP ist eben, dass die Session-ID nicht per Cookie, sondern per URL-Parameter weitergegeben wird. Das hat aber absolut nichts mit der Sicherheit zu tun, das eine ist genauso sicher oder unsicher wie das andere, weil beide Angaben vom Client gefälscht bzw. verändert werden können.
Wie gesagt: Wenn du die Session-ID aus der URL weghaben willst, stell PHP so ein, dass er die Session primär mit einem Cookie zu realisieren versucht. Wenn das nicht geht, kannst du das Session-Cookie möglicherweise künstlich setzen mit set_cookie(), und außerdem könntest du auch alles so lassen, wie es ist. Es ist wirklich nur reine Kosmetik. Wenn dein Session-Mechanismus dahinter ordentlich funktioniert, kommt keiner ohne Genehmigung ran.
- Sven Rautenberg
Wie gesagt: Wenn du die Session-ID aus der URL weghaben willst, stell PHP so ein, dass er die Session primär mit einem Cookie zu realisieren versucht.
gute idee, ich kann aber nichts an der php.ini ändern, falls du das meinst.
Wenn das nicht geht, kannst du das Session-Cookie möglicherweise künstlich setzen mit set_cookie(),
das wäre gut, wie mache ich das?! also wie ich die session-id in ein cookie speichere ist nicht das problem. ich sehe nicht ganz, wie ich php "zwinge", die session-id aus dem cookie zu nehmen und nicht an die url zu hängen?!
und außerdem könntest du auch alles so lassen, wie es ist. Es ist wirklich nur reine Kosmetik. Wenn dein Session-Mechanismus dahinter ordentlich funktioniert, kommt keiner ohne Genehmigung ran.
das ist klar! diese kosmetik soll (muss) aber sein.. ;-)
hallo zusammen,
ich habe eine seite wo man sich einloggen muss(sessions). damit jetzt nicht jeder x-beliebige auf meine seite kommt, möchte ich die seite schützen, dass nur leute mit gültiger session auf meine seite kommen. auf der login seite wird ein schlüssel in die session eingetragen, wenn alle angaben korrekt waren..if (isset($_SESSION["schluessel"])) {
echo "Willkommen";
}
else {
echo "Access denied!";
}kann man das so machen, oder ist das zu unsicher?!
aja auf der folgeseite steht in der url immer die session-id.. ich hab mal gesehen, dass das auch ohne geht, respektive das man die session-id nicht sieht?!
In der PHP.INI wird das anhängen der Session-Id an die Query stadardmässig gesetzt.
Füge mal folgendes über den Head deiner Datei ein:
ini_set("session.use_cookies","0");
ini_set("url_rewriter.tags","");
Gruß Matthias