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 09-07-2007, 22:29
Theed
 Newbie
Links : Onlinestatus : Theed ist offline
Registriert seit: May 2007
Beiträge: 12
Theed ist zur Zeit noch ein unbeschriebenes Blatt
Standard Cookie based Login - Sicherheit

Hallo,

Bisher habe ich für den Cookie-Login immer die $userid + md5($password) gespeichert.

Ich frage mich allerdings, ob dies sicher ist. Denn wenn jemand anders an die Cookies herankäme, könnte diese Person sich einloggen.
Mit Zitat antworten
  #2 (permalink)  
Alt 09-07-2007, 22:31
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

vollkommen richtig. deswegen gibt es bei google auch so viele treffer, wenn man nach "cookies" und "security" sucht.
Mit Zitat antworten
  #3 (permalink)  
Alt 10-07-2007, 10:47
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PW als Hash im Cookie: Nur eine Frage der Zeit bis ein nicht allzuschweres PW mittels Brute Force geknackt wurde. Jeder der an den Cookie kommt hat ein nicht zu komplexes PW in ein paar Minuten "errechnet"

Gruss

tobi
Mit Zitat antworten
  #4 (permalink)  
Alt 10-07-2007, 13:12
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
PW als Hash im Cookie: Nur eine Frage der Zeit bis ein nicht allzuschweres PW mittels Brute Force geknackt wurde. Jeder der an den Cookie kommt hat ein nicht zu komplexes PW in ein paar Minuten "errechnet"
Du meinst ausprobiert? Wie du nen md5 zurückrechnest möchte ich mal gerne sehen.
Die Frage ist warum man nicht einfach auf Sessions zurückgreift.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #5 (permalink)  
Alt 10-07-2007, 13:35
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn das Passwort irgendwie verwurstet im Cookie steht und überprüft wird, dann gibt es dadurch immerhin die Möglichkeit, dass ein User durch PW-Änderung alle bereits verteilten Auto-Login-Cookies zunichte macht.

Was gäbe es da sonst für Alternativen?
__________________
ich glaube
Mit Zitat antworten
  #6 (permalink)  
Alt 10-07-2007, 13:51
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 ministry
Was gäbe es da sonst für Alternativen?
Da man die UID im Cookie ja auch irgendwie einer user-id zuordnen muss und das für gewöhnlich über eine DB läuft kann man einfach alle Cookies unbrauchbar machen mit DELETE FROM autologin_cookies WHERE user_id = XYZ;
Mit Zitat antworten
  #7 (permalink)  
Alt 10-07-2007, 13:57
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Du meinst ausprobiert? Wie du nen md5 zurückrechnest möchte ich mal gerne sehen.
Drumm "errechnet" und nicht errechnet drumm auch Brute Force

Gruss

tobi
Mit Zitat antworten
  #8 (permalink)  
Alt 10-07-2007, 14:11
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von ghostgambler
Da man die UID im Cookie ja auch irgendwie einer user-id zuordnen muss und das für gewöhnlich über eine DB läuft kann man einfach alle Cookies unbrauchbar machen mit DELETE FROM autologin_cookies WHERE user_id = XYZ;
Dann müsste es für den User aber eine Funktion geben "Lösche meine Autologin-Cookies". Unschön.
__________________
ich glaube
Mit Zitat antworten
  #9 (permalink)  
Alt 10-07-2007, 14:29
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 ministry
Dann müsste es für den User aber eine Funktion geben "Lösche meine Autologin-Cookies". Unschön.
passwort-ändern.php
PHP-Code:
<?php
if ($_POST['submit']) {
  
$db->query("UPDATE users SET pw = '" sha1($_POST['pass']) . "' WHERE user_id = " $user_id);
  
$db->query("DELETE FROM autologin_cookies WHERE user_id = " .
    
$user_id " AND cookie_id != '" addslashes($_COOKIE['autologin']) . "'");
}
...
Was willst du jetzt von mir?

Ob ich jetzt den Cookie auf dem Client kille oder in der DB ist doch total egal, Code kostet beides...
Mit Zitat antworten
  #10 (permalink)  
Alt 10-07-2007, 14:50
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Was willst du jetzt von mir?
Nichts von dir persönlich.

Es ist alles nicht ideal.

Wenn im Cookie das Passwort nicht vorkommt, dann kann ich solange an der Cookie-ID rumfummeln, bis ich einen von einem anderen user erwischt habe.

Wenn es drin vorkommt, dann brauche ich keine extra Tabelle für die Cookies. Außerdem werden sie von selber ungültig, sobald sich das Passwort ändert.

Es muss ja nicht offensichtliches MD5 sein, da ist der Phantasie ja keine Grenze gesetzt.
__________________
ich glaube
Mit Zitat antworten
  #11 (permalink)  
Alt 10-07-2007, 15:07
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 ministry
Wenn im Cookie das Passwort nicht vorkommt, dann kann ich solange an der Cookie-ID rumfummeln, bis ich einen von einem anderen user erwischt habe.
Warte, lass mich kurz überlegen - wie finde ich schneller einen Treffer, beim md5 Hash vom Passwort+Salt oder beim md5 von einem kompletten random-Wert?
(fifty:fifty würde ich sagen...)
Das hängt wohl vielmehr einfach von der Länge ab, als vom Inhalt.

Zitat:
Wenn es drin vorkommt, dann brauche ich keine extra Tabelle für die Cookies. Außerdem werden sie von selber ungültig, sobald sich das Passwort ändert.

Es muss ja nicht offensichtliches MD5 sein, da ist der Phantasie ja keine Grenze gesetzt.
Wenn das ganze über die DB läuft hat man die Möglichkeit Cookies die schon länger nicht mehr benutzt wurden für ungültig zu erklären - das hat sehr wohl Vorteile, wenn man es über die DB laufen lässt.
Mal ganz abgesehen davon, dass sich der Salt rein theoretisch erraten lässt, indem man sich anmeldet und dann mit Passwort-Brute Force den md5-Hash knackt...
Sobald man den wiederum hat kann man eine Wörterbuch-Attacke los schubsen.

Die vollkommen user-unabhängige UID ist da in der Theorie definitiv die bessere Variante - und die paar DB-Lookups beim uneingeloggten Seitenaufruf mit vorhandenem Cookie wird mit Sicherheit nicht zu einem bottle neck der DB - da gibt es wesentlich größere Probleme ^^;
Mit Zitat antworten
  #12 (permalink)  
Alt 10-07-2007, 15:28
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Okay, seh ich ein. Werd mich bei meinem nächsten Auto-Login davon inspirieren lassen.
__________________
ich glaube
Mit Zitat antworten
  #13 (permalink)  
Alt 10-07-2007, 19:09
Theed
 Newbie
Links : Onlinestatus : Theed ist offline
Registriert seit: May 2007
Beiträge: 12
Theed ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke für eure zahlreichen Antworten.

In demfall sit es wohl am besten, wnen ich eine neue table für die Autologins mache, und einen(oder mehrere) Zufallsstring/Hash generiere welcher einer UserId zugeordnet ist. Zudem noch ein Attribut für die Ablaufzeit des Autologins.
|Hash1|Hash2(etc)|UserId|Expires
Die Hashes werden dann lokal als Cookie gespeichert.
Mit Zitat antworten
  #14 (permalink)  
Alt 10-07-2007, 22:37
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 Theed
|Hash1|Hash2(etc)|UserId|Expires
Die Spalte Hash2 ist unnötig, bzw. scheiße...
Normalisier die DB und leg pro Hash einen Datensatz an - ggf. dann halt die user_id nur als index und nicht als unique - aber pro Spalte den Hash zu speichern ist banane, das macht nur Probleme, wenn man auf einmal mehr Hashes speichern will als Spalten da sind - erschwert die vernünftige Indizierung der DB (auf einmal benötigt man 2 Indexe über jeweils 2 Spalten wobei eine redundant ist), etc. pp.
Mit Zitat antworten
  #15 (permalink)  
Alt 11-07-2007, 14:54
Theed
 Newbie
Links : Onlinestatus : Theed ist offline
Registriert seit: May 2007
Beiträge: 12
Theed ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich bin mir nicht sicher, aber ich denke dass wir aneinader vorbeireden.
Die Spalte hash2 ist nicht für den 2. Autologin, sondern als 2. "Identifizierungshash".

Hash1 und Hash2 werden lokal als Cookie gespeichert. Pro Autologin respektive user gibt es dann je einen neuen Tupel. Falls die beiden Hashes mit einem Eintrag übereinstimmen, wird der User als Benutzer mit der ID UserId eingeloggt.
Ich dachte ich nehme die Hashes als Index, und die UserId als PK.
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

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
ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:38 Uhr.