php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-10-2006, 20:37
dibsi
 Newbie
Links : Onlinestatus : dibsi ist offline
Registriert seit: Jul 2006
Beiträge: 9
dibsi ist zur Zeit noch ein unbeschriebenes Blatt
Standard Idee für Login System

Hallo !
Ich hab da eine Idee für ein Loginsystem und würde gerne eure Meinung hören:
Ich mach nach einem erfolgreichen Login einen Hash aus Browser und Session ID. Den schreib ich in die DB und bei jedem Aufruf der Seite wird ein neuer Has generiert, der ja mit dem alten übereinstimmen sollte. Wenn nicht, fliegt der User raus.
Na, was sagt ihr ?
Mit Zitat antworten
  #2 (permalink)  
Alt 10-10-2006, 21:26
closure
 Master
Links : Onlinestatus : closure ist offline
Registriert seit: Mar 2006
Beiträge: 796
closure ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,
oder du überlässt das hashgenerieren einfach php. Php muss es
ohnehin machen wenn eine session beginnt bzw. fortgeführt wird.
Und dann sparst du dir das ganze generieren und prüfst nur ob ein wert in der session
gesetz ist. Dieser wert kann ne id oder ein bool flag oder ein userobjekt
oder was auch immer sein.
__________________
(((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")
Mit Zitat antworten
  #3 (permalink)  
Alt 10-10-2006, 21:40
dibsi
 Newbie
Links : Onlinestatus : dibsi ist offline
Registriert seit: Jul 2006
Beiträge: 9
dibsi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von closure
Hi,
oder du überlässt das hashgenerieren einfach php. Php muss es
ohnehin machen wenn eine session beginnt bzw. fortgeführt wird.
Und dann sparst du dir das ganze generieren und prüfst nur ob ein wert in der session
gesetz ist. Dieser wert kann ne id oder ein bool flag oder ein userobjekt
oder was auch immer sein.
Das nützt aber nichts bei zB Session Hijacking. Ursprünglich wollte ich noch die IP zum Hashwert geben, aber dann gibts Probleme mit Proxies. Habt ihr eigentlich irgendwelche Vorschläge, welche Daten ich zum Hashwert dazugeben könnte (sollte möglichst eindeutig sein).
Mit Zitat antworten
  #4 (permalink)  
Alt 10-10-2006, 22:01
Guido
 Member
Links : Onlinestatus : Guido ist offline
Registriert seit: Jan 2001
Beiträge: 324
Guido ist zur Zeit noch ein unbeschriebenes Blatt
Guido eine Nachricht über ICQ schicken Guido eine Nachricht über AIM schicken
Standard

Zitat:
Original geschrieben von dibsi
Habt ihr eigentlich irgendwelche Vorschläge, welche Daten ich zum Hashwert dazugeben könnte (sollte möglichst eindeutig sein).
... zum Beispiel eine in der Session gespeicherte Startzeit der Sitzung
Mit Zitat antworten
  #5 (permalink)  
Alt 10-10-2006, 22:12
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

ich glaube, dass wenn jemand Begrif "Session Hijacking" verwendet, der muss auch ein wenig Prinzip von Session Hijacking kennen.

Nur wenn jemand in Netzwerk eingedrungen ist und direckte Komunikation zwischen dem Server und User verfolgen kann, hat die Möglichkeit Session Hijacking ausüben.

Deine Methode ist genau so von einem Angrif wie auch normale session-führung geschutzt.

also würde ich einfach SSH sagen.
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #6 (permalink)  
Alt 10-10-2006, 22:14
closure
 Master
Links : Onlinestatus : closure ist offline
Registriert seit: Mar 2006
Beiträge: 796
closure ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von dibsi
Das nützt aber nichts bei zB Session Hijacking.
Wenn es sicherheitskritische anwendungen sind ist ohnehin
SSL angebracht. Dann hat sich dein session-hijacking problem auch
erledigt. Dabei gibt es unter umständen wieder probleme mit
einem ähnlich gelagerten fall nämlich man-in-the-middle angriffe
um eben die ssl-sitzung zu hijacken.

Du weisst ja sicher das es perfekte sicherheit nicht gibt.
Die frage ist wie wichtig sind solche überlegungen für deine konkrete
aufgabe ?

greets
__________________
(((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")
Mit Zitat antworten
  #7 (permalink)  
Alt 10-10-2006, 22:28
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

hi @closure
für Session Hijacking wird eigentlich auch nur man-in-the-middle verwendet.
aber SSL ist schon ein richtige Einsatz.
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #8 (permalink)  
Alt 10-10-2006, 22:39
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Slava
ich glaube, dass wenn jemand Begrif "Session Hijacking" verwendet, der muss auch ein wenig Prinzip von Session Hijacking kennen.

Nur wenn jemand in Netzwerk eingedrungen ist und direckte Komunikation zwischen dem Server und User verfolgen kann, hat die Möglichkeit Session Hijacking ausüben.
Nein, als session hijacking wird auch das vorige Erstellen einer Session vom Hacker mit dem folgenden Einloggen des Users über einen präparierten Link in eben diese Session und dem Weiterverwenden der Session vom Hacker bezeichnet. Und dafür braucht man keinen Zugriff aufs Netzwerk...
Aus eben diesem Grunde, gibt es eine Regel, die man besonders beachten sollte beim Umgang mit Sessions. Beim Einloggen den Hash ändern. Dann kann der Hacker die Session nicht mehr nutzen, weil er den Hash nicht kennt.
Als kleinen Bonus kann man noch implementieren, dass die Session erst gestartet wird, wenn sie auch wirklich benötigt wird; das hält den Hacker davon ab, überhaupt eine valide SID zu erlangen.
Mit Zitat antworten
  #9 (permalink)  
Alt 10-10-2006, 23:23
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

hi @ghostgambler
erst mal danke für die Information.
welche Möglichkeiten gibt es überhaupt einem user präparierten Link zu schieben?
also bei E-Mail kann ich mir noch das vorstellen, aber wie kann man das noch machen ohne Man-In-The-Middle zu sein?
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #10 (permalink)  
Alt 10-10-2006, 23:41
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von ghostgambler
Nein, als session hijacking wird auch das vorige Erstellen einer Session vom Hacker mit dem folgenden Einloggen des Users über einen präparierten Link in eben diese Session und dem Weiterverwenden der Session vom Hacker bezeichnet.
nö, das nennt sich wiederum "Session Fixation".
aber die idee, beim login eine neue session-id zu generieren ist gut.

was ich in diesem thread vermisse, ist das schlagwort: "cookies".
generell ist es sicherer die sid nur per cookie übertragen.
wenn die sid per GET kommt, würde ich restriktiver überprüfen - z.b. ip- / browser-check ... etc, ansonsten nicht (oder nur sids per cookies zulassen)
Zitat:
Original geschrieben von closure
Wenn es sicherheitskritische anwendungen sind ist ohnehin
SSL angebracht. Dann hat sich dein session-hijacking problem auch
erledigt.
also wenn die sid per GET kommt, denke ich, hilft ssl auch nicht so viel - stichwort: referer - ich denke mal, der wird auch bei ssl übetragen (kann mich aber auch täuschen), aber auf alle fälle schützt es nicht, wenn ein depp einen link mit seiner sid postet.
Mit Zitat antworten
  #11 (permalink)  
Alt 11-10-2006, 00:12
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von 3DMax
nö, das nennt sich wiederum "Session Fixation".
Hm ... ist sprachlich irgendwie etwas dahingemurkst wie ich finde, ist aber korrekt *kopf kratz* nyo

Hier gibt es ein hübsches PDF zum Thema Session Fixation Attacks
http://www.acrossecurity.com/papers.htm
Mit Zitat antworten
  #12 (permalink)  
Alt 11-10-2006, 09:10
closure
 Master
Links : Onlinestatus : closure ist offline
Registriert seit: Mar 2006
Beiträge: 796
closure ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Slava
hi @closure
für Session Hijacking wird eigentlich auch nur man-in-the-middle verwendet.
aber SSL ist schon ein richtige Einsatz.
Deswegen sprache ich von "ähnlich gelagertem problem". Im detail unterscheiden
sich diese beiden methoden jedoch. Beim http-session hijacking bzw. bei
dessen vorbereitung handelt es sich um einen passiven angriff. Der angreifer
braucht, wie du bereits sagtest, nur zugriff auf das netzwerk und kann
dann passiv die packete mitlesen und so die session-informationen auslesen
und später im eigentlichen angriff verwenden.

Wenn es um ssl-sessions geht ist der angriff aktiv. Der angreifer ist man-in-the-middle und muss bereits beim challenge-response-handshake
aktiv eingreifen in dem er die sitzungsschlüssel abfängt und dem server und
dem opfer jeweils seinen sendet.

@3DMax
Wenn jemand zugang zu den packeten zwischen den server und client
hat hilft auch ein cookie nichts. Man kann die header der anfragen dann
auch sehen. Und dann kann man einfach die eigenen anfragen mit der
im cookie enthaltenen SID spoofen.
Wenn die sache per GET passiert, da hast du natürlich recht, hilft das
alles nix.

greets
__________________
(((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")
Mit Zitat antworten
  #13 (permalink)  
Alt 12-10-2006, 11:07
frido37
 Newbie
Links : Onlinestatus : frido37 ist offline
Registriert seit: Jun 2005
Beiträge: 23
frido37 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die methode session_regenerate_id(); vergibt eine neue session_id, so dass du mit jedem Request enweder eine neue session-id hast oder feststellen kannst, dass ein session-hijacking angriff erfolgt ist (alte session-id ungültig);
PHP-Code:
session_regenerate_id();
if (!%
_SESSION['valid_chk']) {
die(
"angriff festgestellt");

Nicht vergessen, beim login $_SESSION['chk'] auf true zu setzten! (man kann natürlich auch anders feststellen, ob die session ok ist.)

falls du auch zwischen zwei requests ein session-hijacking verhindern willst, kannst du das mit ajax-requests oder einem hidden-iframe lösen. Dabei wird die aktuelle session-id gecheckt, ohne sie zu erneuern, z.B. mit einer session_check.php:
PHP-Code:
<php?
session_start();
if (
$_SESSION['valid_chk']) echo "ok";
else echo 
"failed";
?> 
Mit Zitat antworten
  #14 (permalink)  
Alt 12-10-2006, 11:29
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von frido37
Die methode session_regenerate_id(); vergibt eine neue session_id, so dass du mit jedem Request enweder eine neue session-id hast oder feststellen kannst, dass ein session-hijacking angriff erfolgt ist (alte session-id ungültig);
Ungültig (geworden) durch was?

Das könntest du höchstens durch den optionalen Parameter bewirken - den du in deinem Beispiel aber nicht nutzt, und der erst ab 5.1.0 verfügbar ist.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
Antwort

Lesezeichen


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

Themen-Optionen
Thema bewerten
Thema bewerten:

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.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:29 Uhr.