Veränderter Cookie Sperren

  • Hallo Community,

    ich wende mich heute an euch, da ihr sicherlich eine Lösung parat habt. :)

    Ich suche schon seit langen ein Script, welches wie folgt "aussieht".

    Wenn z.B der Cookie "test" geändert wird, wird er sofort gesperrt oder besser noch sofort gelöscht. Ganz automatisch.

    Vielen Dank im Voraus, wenn jmd. weiß wie das geht.! :)

  • hey,
    das kommt ganz darauf an, wie der cookie gespeichert wird.
    ich benutze dafür meist javascript und die localStorage funktion. in diesem fall kannst du einen wert oder ein array per localStorage.setObj im cache speichern und diesen dann wieder mit localStorage.getObj auslesen. das funktioniert bei ähnlichen funktionen und sprachen vom prinzip her meistens gleich.
    das bedeutet, du kannst wert des alten cookies auslesen und mit dem neuen wert vergleichen. wenn diese nicht den/die selben wert/e enthalten kannst du ihn zum beispiel im oben genannten fall per localStorage.removeItem löschen.

  • okay, dann kannst du doch bevor du ihn speicherst den alten cookie per $_COOKIE['test'] auslesen und checken ob der wert noch "true" ist. falls dies nicht der fall ist soll er gelöscht werden. hier stellt php keine eigene funktion bereit, daher trickst man per setcookie("test", "", time()-3600)

  • Ich hätte da ne andere Idee. Du machst ein Cookie und darin sind alle Sachen die du für die Webseite brauchst enthalten. Natürlich am Schluss noch verschlüsselt. Dazu erstellst du eine Datenbank und speicherst die mit der User_id ab. Und jedesmal wenn man die Seite aufruft/reloadet, checkt das PHP Script zuerst in der Datenbank nach, ob dieser Cookie original ist und nicht verändert wurde.

    So könnte man das checken. In der DB würde ich noch die Userip eintragen, man weiss ja nie...

  • Hi, ich habe es gemacht. Nur leider Funktioniert es immer noch nicht. :(

    so habe ich den Code geschrieben und ein DB-Eintrag gemacht. Alles funkt, bis auf dass alle Cookies gelöscht werden, sobald ich ein Cookie bearbeite. :/

  • ich würde dir gerne den code rot kopieren aber das klappt leider nicht wie ich will ^^

    jedenfalls sind die datenbankabfrage sowie die schleife ziemlicher schwachsinn, da du keine dynamischen werte in deinen cookies speicherst und cookies sich von selbst überschreiben (schlag mich wenn php ne ausnahme bildet).

    nichtsdestotrotz kannst du auch bei neuem seitenaufruf den veränderten cookie löschen statt eventbasiert wie von mir oben beschrieben.
    da der code so winzig ist, gibt's auch mal ein beispiel von mir:

    Code
    if($_COOKIE["uname"] !== "") {
     setcookie("uname", "", time()-48600);
     setcookie("ukey", "", time()-48600);
     setcookie("loggedin", "", time()-48600);
     setcookie("timer", "", time()-48600);
    }

    der code sollte dann bei jedem seitenaufruf ausgeführt werden und kann per | | noch die anderen cookies checken.
    falls du diese abfrage auch ohne einen seitenaufruf ausführen möchtest, würde ich ein batch script, welches diesen kleinen code z.b. stündlich aufruft, empfehlen.

  • Hi, ich habe es gemacht. Nur leider Funktioniert es immer noch nicht. :(

    so habe ich den Code geschrieben und ein DB-Eintrag gemacht. Alles funkt, bis auf dass alle Cookies gelöscht werden, sobald ich ein Cookie bearbeite. :/

    Bitte verwende mysqli_* oder am besten direkt PDO, da mysql_* veraltet ist...
    Meine Idee:

    Speicher einfach den cookie in der User-Tabelle, erstell hierfür einfach eine Spalte namens "cookie_id" und überprüfe jedes mal wenn die me-Page aufgerufen wird, ob der Cookie vom User mit dem Cookie aus der Datenbank übereinstimmt.
    Falls dies nicht der Fall sein sollte, zerstörst du einfach die Session + den jetzigen Cookie.
    Mit freundlichen Grüßen

  • Bitte verwende mysqli_* oder am besten direkt PDO, da mysql_* veraltet ist...Meine Idee:

    Speicher einfach den cookie in der User-Tabelle, erstell hierfür einfach eine Spalte namens "cookie_id" und überprüfe jedes mal wenn die me-Page aufgerufen wird, ob der Cookie vom User mit dem Cookie aus der Datenbank übereinstimmt.
    Falls dies nicht der Fall sein sollte, zerstörst du einfach die Session + den jetzigen Cookie.
    Mit freundlichen Grüßen

    Genau das möchte ich ja auch,... will jetzt nicht egoistisch rüber kommen, aber weißt du wie das genau geht?

  • Genau das möchte ich ja auch,... will jetzt nicht egoistisch rüber kommen, aber weißt du wie das genau geht?

    Ja und man kann es auch in einfachen Schritten erklären...

    Keine Zeit weiter zu schreiben, bin gerade in einem Ranked Game (LoL)

  • Du müsstest noch deinen Login umschreiben, dass es wenn die Logindaten richtig sind, ein Cookie erstellt mit dem Namem "test" und den md5() von dem Username.
    Ich weis, ist nicht sehr sicher mit username, aber ist nur ein Test. In einem CMS würde das dann mit password_hash() und so gehen...

    Hier mal ein beispiel von dem Login

    Dieser Code ist für das "Validieren" des Cookies. Wenn es nicht gleich ist, wie in der DB, wird der User ausgeloggt, die Session zerstört und das Cookie gelöscht.


    Hoffe ich konnte dir helfen.

    Cheers,
    Apathy.

    5 Mal editiert, zuletzt von Apathy (25. Oktober 2015 um 01:53)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!