Sicherheit - login

hi,
wie kann ich verhinden das mehrere user auf meiner webseite 1.sich mit den gleichen login anmelden?
2.Ich moechte auch verhindern das ein user mit mehreen Browsern sich mit verschieden usernamen einloggt.
3.Wie kann ich verhindern folgendes verhindern?
die anmeldeseite heisst login.php. wenn man sich richtig eingeloogt hat (user und pw stimmen ueberein), kommt man zu welcome.php.
Wenn jemand jetzt im broser welcome.php eingibt, darf die seite nicht angezeigt werden, wie realisier ich sowas? reicht es aus die datei welcome.php in ein ordner zu packen auf den webserver, und diesen ordner dann bestimmte rechte geben, s. d. man nur noch ueber die login.php reinkommt?

gruss und danke im voraus.
ming

1.sich mit den gleichen login anmelden?

Mit einfachen Mitteln kannst du nur das gleichzeitige einloggen unter diesem einen Account verhindern. Musst Du ne Tabelle mitführen, in der du den Login-Namen und die aktuelle IP-Adresse vermerkst. Taucht der gleiche Benutzer nochmal mit ner anderen IP-Adresse auf, dann kann die login-Seite ihn abweisen.

Geht es um eine Internet-Seite oder eine Intranet-Seite?? Beim Intranet bestünde eventuell noch die Möglichkeit den Login an eine Feste IP-Adresse zu binden. Dann kann der User aber nur von seinem PC aus auf die Seite.

Ansonsten bräuchte man ein einmaliges Merkmal, mit dem sich ein Benutzer ausweisen muss, das sich aber auch zwingendermaßen zu einem Zeitpunkt nur an einem Ort befinden kann (ne Datei mit nem Zertifikat lässt sich halt überall hin kopieren). Z.B. ne Smartcard.

2.Ich moechte auch verhindern das ein user mit mehreen
Browsern sich mit verschieden usernamen einloggt.

Siehe 1 (die Tabelle): Taucht die gleiche IP schon unter anderem User auf. Geht aber nur, wenn du ausschließen kannst, dass die user nicht über einen Proxy auf deine Seite kommen.

Cookies?? Sollte auch gehen. Zumindest wenn der User nicht auf die Idee kommt sich einmal mit dem IE und einmal mit Mozilla einzuloggen.

3.Wie kann ich verhindern folgendes verhindern?
die anmeldeseite heisst login.php. wenn man sich richtig
eingeloogt hat (user und pw stimmen ueberein), kommt man zu
welcome.php.

Den Referer überprüfen. Hängt aber vom Browser ab, ob der mitgeliefert wird. … und ein Proxy kann die auch wieder rausfiltern. (den referer findest du im http-request)

Oder du arbeitest mit ner Session. Das login.php erzeugt diese Session und setzt da eine Variable, an der welcome.php erkennen kann, dass die login.php ausgeführt wurde. welcome.php löscht diese Variable wieder. Bei einem Aufruf über den Browser fehlt diese Variable natürlich und welcome bricht ab.

Wenn jemand jetzt im broser welcome.php eingibt, darf die
seite nicht angezeigt werden, wie realisier ich sowas? reicht
es aus die datei welcome.php in ein ordner zu packen auf den
webserver, und diesen ordner dann bestimmte rechte geben, s.
d. man nur noch ueber die login.php reinkommt?

Wenn du bei einem erfolgreichen Login eine Weiterleitung auf die welcome.php machst, dann dürfte das nicht gehen. Eine Weiterleitung läuft soweit ich weiß auch über den Browser. Also Login sagt dem Browser, welche Seite er als nächstes aufrufen soll und der stellt einen neuen Request. Dadurch muss das welcome.php natürlich dem Webserver bekannt sein.

Gruß
Benky

Hi Benky,

thx erstmal fuer die qualifizierte Aussage.

Mit einfachen Mitteln kannst du nur das gleichzeitige
einloggen unter diesem einen Account verhindern. Musst Du ne
Tabelle mitführen, in der du den Login-Namen und die aktuelle
IP-Adresse vermerkst. Taucht der gleiche Benutzer nochmal mit
ner anderen IP-Adresse auf, dann kann die login-Seite ihn
abweisen.

daran hab ich auch schon gedacht, aber was passiert wenn er eine firewall hat die keine ip liefert, oder was passiert wenn sie sich ueber acor einloggen, wo mehrer user die gleiche ip sharen??

Geht es um eine Internet-Seite oder eine Intranet-Seite?? Beim
Intranet bestünde eventuell noch die Möglichkeit den Login an
eine Feste IP-Adresse zu binden. Dann kann der User aber nur
von seinem PC aus auf die Seite.

Ansonsten bräuchte man ein einmaliges Merkmal, mit dem sich
ein Benutzer ausweisen muss, das sich aber auch
zwingendermaßen zu einem Zeitpunkt nur an einem Ort befinden
kann (ne Datei mit nem Zertifikat lässt sich halt überall hin
kopieren). Z.B. ne Smartcard.

hmm…

2.Ich moechte auch verhindern das ein user mit mehreen
Browsern sich mit verschieden usernamen einloggt.

Siehe 1 (die Tabelle): Taucht die gleiche IP schon unter
anderem User auf. Geht aber nur, wenn du ausschließen kannst,
dass die user nicht über einen Proxy auf deine Seite kommen.

Cookies?? Sollte auch gehen. Zumindest wenn der User nicht auf
die Idee kommt sich einmal mit dem IE und einmal mit Mozilla
einzuloggen.

das jemand sich mit 2 verschiedenen browsern einloggen kann daran hab ich nicht gedacht…muss ich mir noch was einfallen lassen…

3.Wie kann ich verhindern folgendes verhindern?
die anmeldeseite heisst login.php. wenn man sich richtig
eingeloogt hat (user und pw stimmen ueberein), kommt man zu
welcome.php.

Den Referer überprüfen. Hängt aber vom Browser ab, ob der
mitgeliefert wird. … und ein Proxy kann die auch wieder
rausfiltern. (den referer findest du im http-request)

k les ich nach;

Oder du arbeitest mit ner Session. Das login.php erzeugt diese
Session und setzt da eine Variable, an der welcome.php
erkennen kann, dass die login.php ausgeführt wurde.
welcome.php löscht diese Variable wieder. Bei einem Aufruf
über den Browser fehlt diese Variable natürlich und welcome
bricht ab.

arbeite ich zur zeit. frage: ich starte eine session in login.php. Wenn user und pw stimmen setze/regestriere ich den user in die session. auf der welcom.php frag ich nach den user in der session ab. warum muss ich hier in der welcome.php die session erneut starten? Las ich das session_start() weg funkst nicht. Muss ich die sid verschlüsselt an die URL hängen und von login.php an die welcome.php uebergeben? Wie holl ich mir die sid auf auf der welcome.php??

Wenn jemand jetzt im broser welcome.php eingibt, darf die
seite nicht angezeigt werden, wie realisier ich sowas? reicht
es aus die datei welcome.php in ein ordner zu packen auf den
webserver, und diesen ordner dann bestimmte rechte geben, s.
d. man nur noch ueber die login.php reinkommt?

Wenn du bei einem erfolgreichen Login eine Weiterleitung auf
die welcome.php machst, dann dürfte das nicht gehen. Eine
Weiterleitung läuft soweit ich weiß auch über den Browser.
Also Login sagt dem Browser, welche Seite er als nächstes
aufrufen soll und der stellt einen neuen Request. Dadurch muss
das welcome.php natürlich dem Webserver bekannt sein.

Hab ich dich so verstanden das das nicht geht? Meinst du mit Weiterleitung header(). Gibst Alternativ noch ne andere möglichkeit?

gruss ming

frage: ich starte eine session in
login.php. Wenn user und pw stimmen setze/regestriere ich den
user in die session. auf der welcom.php frag ich nach den user
in der session ab. warum muss ich hier in der welcome.php die
session erneut starten? Las ich das session_start() weg funkst
nicht. Muss ich die sid verschlüsselt an die URL hängen und
von login.php an die welcome.php uebergeben? Wie holl ich mir
die sid auf auf der welcome.php??

session_start() startet eine session oder führt eine bestehende Session Fort!!!
man muß die Session nicht unbedingt an die url anhängen, wäre aber auch nicht verkert…

wenn Du jetzt diese Session Funktion mit einer IP Abfrage verbindest, dann sollte der zweitlogin mit anderen Browser erschwert werden.
speicher dann einfach zu dem Usernamen die IP und die Session…
oder Du kannst zusätzlich auch noch die Loginzeit speichern…
ansonsten kannst Du ja auch noch die Browserversion usw mit speichern…
Aber ganz dicht bekommst Du es nie…

session_start() startet eine session oder führt eine
bestehende Session Fort!!!
man muß die Session nicht unbedingt an die url anhängen, wäre
aber auch nicht verkert…

wenn Du jetzt diese Session Funktion mit einer IP Abfrage
verbindest, dann sollte der zweitlogin mit anderen Browser
erschwert werden.
speicher dann einfach zu dem Usernamen die IP und die
Session…
oder Du kannst zusätzlich auch noch die Loginzeit
speichern…
ansonsten kannst Du ja auch noch die Browserversion usw mit
speichern…
Aber ganz dicht bekommst Du es nie…

Hi,
thx.
gruss ming