• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Cookies als "eingeloggt bleiben" Funktion

Bourbon

Mitglied
Hallo Leute,

ich habe da mal eine Frage bezüglich der Sicherheit von Cookies.

Und zwar wollte ich eine "eingeloggt bleiben" Funktion erstellen.
Das heißt, dass nachdem sich der Benutzer eingeloggt hat, wird ein Cookie mit der Email-Adresse und einer mit dem gehashten Passwort erstellt.
Ruft der Nutzer die Seite erneut auf, wird überprüft ob ein Cookie vorhanden ist und falls ja, ein Login mit diesen Daten versucht.

Jetzt meine Frage:
Ist das das normale Vorgehen oder handel ich damit grob fahrlässig und öffne damit eine riesige Sicherheitslücke?
 
Werbung:
Soweit ich weiß wird in zwei Arten von Cookies unterschieden. Einmal die Dauerhaften Cookies (bleiben über Monate oder gar Jahre auf dem Computer) und Session-Cookies (werden automatisch immer dann gelöscht, wenn der Browser geschlossen wird. Ein Sicherheitsrisiko stellen diese Cookies nicht dar.) So mein Wissensstand.
 
Ich verwende die dauerhaften Cookies, weil der Nutzer ja auch nach dem schließen des Browser ohne Login (kein erneutes Eingeben, sondern Cookie auswerten) reinkommen soll.
 
Werbung:
Hallo Leute,

ich habe da mal eine Frage bezüglich der Sicherheit von Cookies.

Und zwar wollte ich eine "eingeloggt bleiben" Funktion erstellen.
Das heißt, dass nachdem sich der Benutzer eingeloggt hat, wird ein Cookie mit der Email-Adresse und einer mit dem gehashten Passwort erstellt.
Ruft der Nutzer die Seite erneut auf, wird überprüft ob ein Cookie vorhanden ist und falls ja, ein Login mit diesen Daten versucht.

Jetzt meine Frage:
Ist das das normale Vorgehen oder handel ich damit grob fahrlässig und öffne damit eine riesige Sicherheitslücke?

Sicherheitslücke.
http://stackoverflow.com/questions/1354999/keep-me-logged-in-the-best-approach
 
Okay, also einfach beim einloggen eine zufallsgenerierte Zahl als Cookie und in der DB platzieren.
Beim nächsten Login email, password und randomnumber abfragen.
Falls das funktioniert, neue randomnumber generieren und sowohl Cookie als auch DB-Eintrag überschreiben.
Sollte klappen.

Nachtrag:
Besten Dank :)
 
Zuletzt bearbeitet:
Werbung:
Klasse, der Cookie wird erzeugt, die Zufallszahl generiert und in der DB gespeichert.
Leider kommt jetzt, dass ich zu viele Weiterleitungen habe:

Hier die Index.php
PHP:
<?php
include_once 'includes/db_connect.php';
include_once 'includes/functions.php';
sec_session_start();
if (isset($_COOKIE["email"])) {
    header('Location: includes/process_login_cookie.php');
}
if (login_check($mysqli) == true) {
    $logged = 'in';
    header('Location: db_groups.php');
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
        <link href="styles/general.css" rel="stylesheet" type="text/css" />
        <link href="styles/specific.css" rel="stylesheet" type="text/css" />
        <meta charset="utf-8">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
</head>
<body>

<br>
<h1>WHATEVER</h1>
<br>
<br>
<br>
<div class='div_element'><a href="register.php">Konto erstellen</a></div>
<div class='div_element'><a href="login.php">Anmelden</a></div>


</body>

Und die die process_login_cookie.php:
PHP:
<?php
include_once 'db_connect.php';
include_once 'functions.php';
sec_session_start(); // Unsere selbstgemachte sichere Funktion um eine PHP-Sitzung zu starten.
$email = $_COOKIE["email"];
$password = $_COOKIE["password"];
    if (login($email, $password, $mysqli) == true) {
        // Login erfolgreich
        header('Location: ../db_groups.php');
    } else {
        header('Location: ../index.php');
    }

Ich würde jetzt mal davon ausgehen, dass der Login mit dem Cookie noch nicht klappt und daher eine Weiterleitung auf index.php erfolgt und diese wiederum auf die process_login_cookie.php weiterleitet, wodurch der Login wieder nicht klappt und es zurück zur Index.php geht .... also eine Endlosschleife.
 
Zuletzt bearbeitet:
Die Fehlermeldung "zu viele Weiterleitungen" kenne ich garnicht, muss wohl neu sein. :D

Und was hat das mit HTML zu tun?
 
Die Fehlermeldung "zu viele Weiterleitungen" kenne ich garnicht, muss wohl neu sein. :D

Und was hat das mit HTML zu tun?
Oder Sie haben nie einen derartigen Fehler verursacht.

Was das mit HTML zu tun hat? Ich wusste einfach nur nicht, in welches andere Unterforum ich das schreiben könnte und das sah mir der Teil fürs "Allgemeine" aus.

Hab es im übrigen hinbekommen.
Es war genauso, wie oben beschrieben. Der fehlerhafte Login-Versuch resultierte in einer Endlosschleife.
Es gab einen Fehler bei der Übermittlung der Zufallszahl ans Login-Script. Jetzt funktioniert alles bestens!
 
Werbung:
Werbung:
Okay, wie wäre es dann damit:
Cookie 1: bestehend aus E-Mail-Adresse + Zeitstempel md5 verschlüsselt
Cookie 2: bestehend aus Zufallszahl
 
Werbung:
Hast du den verlinkten StackOverflow Eintrag von @scbawik überhaupt gelesen?

Siehe hier:
3) Create a cookie called SOMETHING containing: md5(salt+username+ip+salt) and a cookie called somethingElse containing id
Es muss ja aber nicht genau so sein, man kann ja andere Werte und Variablen nehmen.

Und ja, klingt logisch, dass in das PHP-Forum zu verschieben. Aber ich denke so eine Kleinigkeit sollte jetzt nicht ein riesen Problem darstellen. Im übrigen, 2 Posts und beide haben eigentlich nichts mit dem Thema zu tun :D

Bezüglich der IP: die IP des Nutzers kann sich doch verändern, ergo würde er unter dem o.g. Vorgehen dann nicht wieder eingeloggt werden.
 
Dann lies mal weiter, die zweite Antwort hat etwa 4x soviele votes und erklärt warum die erste unsicher ist.
 
Werbung:
Mmmmh, ich war immer der Meinung, dass bei stackoverflow, die Antwort mit dem grünen Hacken die beste ist...
 
Zurück
Oben