Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Problem mit Login Wie geht es das man sich dauerhaft einloggen kann.

Frage Entwicklung PHP

Mitglied: Michi262

Michi262 (Level 1) - Jetzt verbinden

07.09.2008, aktualisiert 02.10.2008, 4780 Aufrufe, 13 Kommentare

Hi

wie ich oben schon geschrieben habe möchte ich das man sich auf einer Seite dauerhaft einloggen kann.

Ich weiß auch das ich dadurch die sessions mit dem cookie über eine DB verknüpfen muss aber wie das geht weiß ich nicht.

Wie es funktioniert das es nicht dauerhaft ist weiß ich mitlerweile.

Hab dann mal n bisschen gesucht und bin auf das gestoßen: http://tut.php-quake.net/login.html

Leider komm ich da nicht so richtug weiter.

Könnte mir wer von euch das erklären?

Wäre euch sehr dankbar

Michi262
Mitglied: filippg
07.09.2008 um 17:51 Uhr
Hallo,

letztlich ist es ganz einfach. Wenn sich jemand erfolgreich eingeloggt hast sendest du ihm ein Cookie in dem seine Nutzer-ID steht. Das Ablaufdatum des Cookies setzt du auf "Never".
Wenn ein Nutzer neu auf die Seite kommt fragst du ab, ob dieses Cookie bei ihm existiert und liest gegebenenfalls die Nutzer-ID aus. Wie du für die einzelnen Seiten die Authentifizierung bei dir machst (ich gehe mal davon aus über die SESSION-Variablen/Mechanismen von PHP oder?) weiß ich nicht, aber die Nutzer-ID musst du dann halt als "erfolgreich authentifiziert" anerkennen.

So zumindest das Grundprinzip. Es ergibt sich nur ein Sicherheitsproblem:
Wenn das Cookie nur die Nutzer-ID speichert (und die Nutzer-IDs kann man meist irgendwo herausbekommen) dann kann jemand das bei sich gespeicherte Cookie so manipulieren, dass er plötzlich als jemand anderes angemeldet ist. Das kann man verhindern, indem man noch einen anderen Wert mit dazuschreibt - beispielsweise eine weitere ID, die auf der Seite nirgends einzusehen ist, aber in der Datenbank bei den Nutzerdaten gespeichert wird. Soll nun jemand über sein Cookie authenitfiziert werden, dann wird auch diese zweite ID ausgelesen und mit dem Wert in der DB verglichen. Nur wenn die beiden übereinstimmen wird das Cookie anerkannt.

Daneben gibt es noch die üblichen Gefahren, z.b. 1. dass das Cookie gespeichert ist, jemand mit Zugriff auf den Rechner des Nutzers sich also als dieser anmelden kann oder das Cookie kopieren kann, dass 2. das Cookie bei der Übertragung abgehört werden kann, dass 3. Sessions geklaut werden können, wenn man die Session-ID abhören kann etc...

Gruß

Filipp
Bitte warten ..
Mitglied: Michi262
07.09.2008 um 18:15 Uhr
Hi

danke. Nach dem es aber doch so viele Gefahren gibt wollte ich mal fragen ob mir da wer ne sichere! anleitung schreiben kann. D.h. das es möglichst sicher ist. Weil ich weiß nicht ob ich das so sicher hinbekomme ^^

Michi26206
Bitte warten ..
Mitglied: Enclave
21.09.2008 um 14:54 Uhr
Also ich habe das so gemacht:

Ich habe 2 Tabellen: user und loginkeys

Wenn sich jetzt jemand einloggt generiere ich mir einen Key der aus dem MD5 Hash folgender Werte besteht:
- IP
- Aktuelle Zeit
- Username
- und 5 zufälligen Zahlen zwischen 1 und 1337
01.
$key = md5(ip.time().username.rand(1,1337).rand(1,1337).rand(1,1337).rand(1,1337).rand(1,1337));
Diesen Key schreibe ich mit der dazugehörigen Userid in die Tabelle login (man kann die beiden Tabellen natürlich auch zusammenfassen aber ich zieh mir die Sachen lieber was auseinander)

Diesen Key kann man nahezu unmöglich rekonstruieren. Diesen Key und die Userid speicher ich als Cookie auf dem Rechner.
Beim Besuch der Seite wird überprüft ob der Key stimmt und wenn er stimmt ist man halt eingeloggt...

Viele speichern die Userid sowie den MD5 Hash des Passworts in einem Cookie.
Wenn jetzt jemand an die Cookies kommt (wie auch immer) kann er versuchen das Passwort zu cracken.
Bei meiner Variante kann er sich zwar einloggen aber er kommt nicht an das Passwort dran und da bei mir das alte Passwort angegeben werden muss wenn man das PW ändern will kann er das PW nicht ändern.

Mann kann den Loginkey auch noch mit dem IP Range xx.xx.*.* kombinieren um zusätzliche Sicherheit zu bekommen...

Ich hoffe das war genug Anregung

Mit freundlichen Grüßen

Enclave
Bitte warten ..
Mitglied: Michi262
22.09.2008 um 17:10 Uhr
Hi

danke fpr die antwort das mit dem Key und so ist bei mir net des Problem. Sondern wie ich Cookies speichere und auslese^^

Michi262
Bitte warten ..
Mitglied: Enclave
22.09.2008 um 17:46 Uhr
Ja speichern tust du die mit setcookie
01.
setcookie("pp_loginkey", $key, time()+(60*60*24*30)); 
02.
setcookie("pp_user", $user, time()+(60*60*24*30));
Einfach PHP manuel lesen...

Und dann zur Überprüfung:
01.
if (isset($_COOKIE['pp_loginkey']) && isset($_COOKIE['pp_user']))
und genauso ließt du die aus und dann musst du halt noch überprüfen ob der Key zum User gehört...

Mit freundlichen Grüßen

Chaos
Bitte warten ..
Mitglied: Michi262
22.09.2008 um 17:53 Uhr
Hi

danke ich werds mal probieren thx.

Michi262
Bitte warten ..
Mitglied: Michi262
26.09.2008 um 16:39 Uhr
Hi

sry wegen doppel Post aber sonst liest es leider kaum wer.

Also ich hab alles so gemacht allerdings kommt jetzt ein Error und zwar:

01.
Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\xampp\htdocs\mycms\checklogin.php:21) in C:\Programme\xampp\htdocs\mycms\checklogin.php on line 62 
02.
 
03.
Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\xampp\htdocs\mycms\checklogin.php:21) in C:\Programme\xampp\htdocs\mycms\checklogin.php on line 63
in Zeile 62 und 63 hab ich das setcookie stehen. Hab ich etwas vergessen oder falsch gemacht?

Und noch was:

Die Werte aus dem Cookie bekomm ich so oder?

$_COOKIE['pp_loginkey'] bzw. $_COOKIE['pp_user']

Wie "zerstör" ich den Cookie wieder?

Danke shcon mal für die Hilfe
Michi262
Bitte warten ..
Mitglied: Enclave
26.09.2008 um 20:18 Uhr
Zitat von Michi262:
in Zeile 62 und 63 hab ich das setcookie stehen. Hab ich etwas
vergessen oder falsch gemacht?
Ja. Du darfst vor dem setzen keinen Output haben (keine Leerzeile und nichts anderes vor <?php).
Also kein echo oder so.
Zitat von Michi262:
Die Werte aus dem Cookie bekomm ich so oder?

$_COOKIE['pp_loginkey'] bzw. $_COOKIE['pp_user']
genau so
Zitat von Michi262:
Wie "zerstör" ich den Cookie wieder?
Wer das Cookie löschen will ruft einfach setcookie nur mit der Namensangabe des Cookies auf:

setcookie("adressliste_cookie");

Auf php.net wird empfohlen, es ohne Wertangaben (also nur "") und mit negativer Geltungsdauer aufzurufen, damit es auch sicher gelöscht wird. Das sieht dann so aus:

setcookie("adressliste_cookie","",time()-3600);
Quelle: PHP für dich


Mit freundlichen Grüßen

Enclave
Bitte warten ..
Mitglied: Michi262
28.09.2008 um 17:54 Uhr
Hi

ok danke. Hättest du nen Tipp wie ich dann den Cokkie setzen soll? Ich muss ja zuvor noch alle eingeben Prüfen ob es auch der richtige User ist und ob er überhaupt eingeloggt bleiben will.

Michi262
Bitte warten ..
Mitglied: Enclave
28.09.2008 um 21:22 Uhr
Ich sagte doch RTFM...

Mit freundlichen Grüßen

Enclave
Bitte warten ..
Mitglied: Michi262
29.09.2008 um 17:53 Uhr
Hi

ich hab das ding schon gelsen und jetz nochmal allerdings wer ich net schlau wie ich das machen soll das ich den Cokkie zu dem Zeitpunkt setze das kein Eingabefeld den blockiert. Könntest du mir nen Tipp geben?

Michi262
Bitte warten ..
Mitglied: Enclave
29.09.2008 um 18:06 Uhr
Du übergibst die Loginvariablen an eine andere Datei. Und die fängt dann zuallererst damit an:
01.
<?php 
02.
// übergebene Variablen werden geprüft und Cookies gesetzt 
03.
?> 
04.
Du bist eingeloggt 
05.
oder auch nicht
Mit freundlichen Grüßen

Enclave
Bitte warten ..
Mitglied: Michi262
02.10.2008 um 20:54 Uhr
Hi,

bin endlich dazu gekommen. ;) Jetzt funktionierts danke.

Michi262
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
gelöst Windows Server 2012 - Remote Login Problem (2)

Frage von Loginfriek zum Thema Windows Server ...

Windows 10
Nonstop Login im Sperrbildschirm (4)

Frage von TiCar zum Thema Windows 10 ...

Windows Server
Google Chrome Web Store Problem auf Terminal Farm

Frage von dakoerry zum Thema Windows Server ...

Multimedia & Zubehör
gelöst Problem: DVI zu VGA (8)

Frage von Protected zum Thema Multimedia & Zubehör ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...