Ich habe vor ein paar Monaten angefangen, PHP zu verwenden. Um ein Anmeldesystem für meine Website zu erstellen, habe ich Informationen zu Cookies und Sitzungen und deren Unterschieden gelesen (Cookies werden im Browser des Benutzers und in den Sitzungen auf dem Server gespeichert). Zu dieser Zeit bevorzugte ich Cookies (und wer mag keine Cookies?!) Und sagte nur: "Wen interessiert das? Ich habe kein gutes Geschäft damit, sie auf meinem Server zu speichern", also habe ich Cookies für verwendet mein Bachelor-Abschlussprojekt. Nachdem ich den größten Teil meiner App erledigt hatte, hörte ich, dass für den speziellen Fall des Speicherns der Benutzer-ID Sitzungen besser geeignet sind. Also begann ich darüber nachzudenken, was ich sagen würde, wenn die Jury mich fragt, warum Sie Cookies anstelle von Sitzungen verwendet haben. Ich habe genau diesen Grund (dass ich keine internen Informationen über den Benutzer speichern muss).? oder ist es mehr als das?
Können Sie mir bitte die Vor- und Nachteile der Verwendung von Cookies zur Aufbewahrung der Benutzer-ID erläutern?
Vielen Dank für euch alle in StackOverflow!
Antworten:
Das Konzept speichert persistente Daten über Seitenladevorgänge für einen Webbesucher. Cookies speichern es direkt auf dem Client. Sitzungen verwenden ein Cookie als eine Art Schlüssel, um die auf der Serverseite gespeicherten Daten zu verknüpfen.
Es wird bevorzugt, Sitzungen zu verwenden, da die tatsächlichen Werte vor dem Client verborgen sind und Sie steuern, wann die Daten ablaufen und ungültig werden. Wenn alles auf Cookies basiert, könnte ein Benutzer (oder Hacker) seine Cookie-Daten manipulieren und dann Anfragen an Ihre Site abspielen.
Bearbeiten: Ich glaube, die Verwendung von Cookies hat keinen anderen Vorteil als die Einfachheit. Betrachten Sie es so ... Hat der Benutzer einen Grund, seine ID-Nummer zu kennen? Normalerweise würde ich nein sagen, der Benutzer benötigt diese Informationen nicht. Das Verteilen von Informationen sollte auf der Grundlage von Wissensbedürfnissen begrenzt werden. Was passiert, wenn der Benutzer sein Cookie so ändert, dass es eine andere ID hat? Wie reagiert Ihre Anwendung? Es ist ein Sicherheitsrisiko.
Bevor die Sitzungen der letzte Schrei waren, hatte ich im Grunde meine eigene Implementierung. Ich habe einen eindeutigen Cookie-Wert auf dem Client gespeichert und meine persistenten Daten zusammen mit diesem Cookie-Wert in der Datenbank gespeichert. Dann habe ich auf Seitenanfragen diese Werte abgeglichen und hatte meine persistenten Daten, ohne dass der Client kontrollieren konnte, was das war.
quelle
session_write_close();
Bedarf ein Vorwort vor . Das Rollen Ihrer eigenen eindeutigen ID und das Abgleichen mit einfachen Cookies war nicht so schwierig und hält alle Seiten schön und bissig.Grundideen zur Unterscheidung dieser beiden.
Session:
Kekse:
Die Sitzung wird bevorzugt, wenn Sie kurzfristige Informationen / Werte speichern müssen, z. B. Variablen zum Berechnen, Messen, Abfragen usw.
Cookies werden bevorzugt, wenn Sie langfristige Informationen / Werte speichern müssen, z. B. das Benutzerkonto (damit das Konto auch dann noch angemeldet ist, wenn der Computer 2 Tage lang heruntergefahren wird). Ich kann mir nicht viele Beispiele für Cookies vorstellen, da diese in den meisten Situationen nicht übernommen werden.
quelle
Dies ist der Hauptunterschied in Ihrer Wahl,
Wenn Sie möchten, dass die ID lange gespeichert bleibt, müssen Sie Cookies verwenden. Andernfalls, wenn Sie nur möchten, dass die Website den Benutzer nur für diesen Besuch erkennt, sind Sitzungen der richtige Weg.
Sitzungen werden in einer Datei gespeichert, die Ihr PHP-Server generiert. Um sich zu merken, welche Datei für welchen Benutzer bestimmt ist, setzt PHP auch ein Cookie im Browser des Benutzers, das diese Sitzungsdatei-ID enthält, damit PHP bei ihrem nächsten Besuch diese Datei liest und die Sitzung neu lädt.
Jetzt löscht PHP standardmäßig Sitzungen in jedem Intervall, und auch die Namenskonvention der Sitzung lässt sie automatisch ablaufen. Außerdem behalten Browser das Cookie, das die Sitzungs-ID enthält, nicht mehr bei, sobald der Browser geschlossen oder der Verlauf gelöscht wird.
Es ist wichtig zu beachten, dass heutzutage Browser auch andere Arten von Speicher-Engines wie LocalStorage, SessionStorage und andere Webdb-Engines unterstützen, mit denen Javascript-Code Daten auf Ihrem Computer speichern kann, um sich an Sie zu erinnern. Wenn Sie beispielsweise die Javascript-Konsole in Facebook öffnen und "localStorage" eingeben, werden alle Variablen angezeigt, die Facebook verwendet, um sich ohne Cookies an Sie zu erinnern.
quelle
Wenn Sie die #ID als Cookie speichern, um angemeldete Benutzer zu erkennen, zeigen Sie Benutzern tatsächlich Daten an, die nicht mit ihnen zusammenhängen. Wenn ein Dritter versucht, zufällige IDs als Cookie-Daten in seinem Browser festzulegen, kann er den Server davon überzeugen, dass er ein Benutzer ist, obwohl dies tatsächlich nicht der Fall ist. Das ist ein Mangel an Sicherheit.
Sie haben Cookies verwendet und wie gesagt bereits den größten Teil des Projekts abgeschlossen. Außerdem hat Cookie das Privileg, lange zu bleiben, während Sitzungen schneller enden. Sitzungen sind in diesem Fall also nicht geeignet. In Wirklichkeit verwenden viele berühmte und beliebte Websites und Dienste Cookies, und Sie können lange Zeit angemeldet bleiben. Aber wie können Sie ihre Methode verwenden, um einen sichereren Anmeldevorgang zu erstellen?
Hier ist die Idee: Sie können bei der Verwendung von Cookies helfen: Wenn Sie zufällige Schlüssel anstelle von IDs verwenden, um angemeldete Benutzer zu erkennen, geben Sie Ihre Primärdaten erstens nicht an zufällige Benutzer weiter, und zweitens, wenn Sie den Zufall berücksichtigen Schlüssel groß genug, Es wird für jeden schwieriger sein, einen Schlüssel zu erraten oder einen zufälligen zu erstellen. Sie können beispielsweise einen Schlüssel mit einer Länge von 40 wie diesen im Browser des Benutzers speichern: "KUYTYRFU7987gJHFJ543JHBJHCF5645UYTUYJH54657jguthfn", und es ist weniger wahrscheinlich, dass jemand den genauen Schlüssel erstellt und vorgibt, jemand anderes zu sein.
quelle
Kurze Antwort
Nach Priorität geordnete Regeln:
Quelle: https://www.lucidar.me/en/web-dev/sessions-or-cookies/
Detaillierte Antwort
Kekse
Sitzungen
Die richtige Wahl
Sitzungen verwenden einen Cookie! Sitzungsdaten werden auf der Serverseite gespeichert, aber eine UID wird auf der Clientseite in einem Cookie gespeichert. Dadurch kann der Server einen bestimmten Benutzer mit den richtigen Sitzungsdaten abgleichen. UID ist geschützt und schwer zu hacken, aber nicht unverwundbar. Verlassen Sie sich bei vertraulichen Aktionen (Ändern der E-Mail oder Zurücksetzen des Kennworts) weder auf Sitzungen noch auf Cookies: Fragen Sie nach dem Benutzerkennwort, um die Aktion zu bestätigen.
Sensible Daten sollten niemals in Cookies gespeichert werden (E-Mails, verschlüsselte Passwörter, persönliche Daten ...). Beachten Sie, dass die Daten auf einem fremden Computer gespeichert sind. Wenn der Computer nicht privat ist (Klassenzimmer oder öffentliche Computer), kann möglicherweise jemand anderes den Inhalt der Cookies lesen.
Remember-me- Daten müssen in Cookies gespeichert werden, sonst gehen Daten verloren, wenn der Benutzer den Browser schließt. Speichern Sie jedoch kein Passwort oder persönliche Benutzerdaten im Cookie "Remember-Me". Speichern Sie Benutzerdaten in der Datenbank und verknüpfen Sie diese Daten mit einem verschlüsselten Paar von ID / Schlüssel, das in einem Cookie gespeichert ist.
Nach Prüfung der vorherigen Empfehlungen ist die folgende Frage schließlich hilfreich, um zwischen Cookies und Sitzungen zu wählen:
Müssen persistente Daten erhalten bleiben, wenn der Benutzer den Browser schließt?
quelle
Tatsächlich sind Sitzung und Cookies nicht immer getrennte Dinge. In der Sitzung werden häufig, aber nicht immer, Cookies verwendet.
In diesen anderen Fragen finden Sie einige gute Antworten auf Ihre Frage. Da es bei Ihrer Frage speziell um das Speichern der IDU (oder ID) des Benutzers geht, denke ich nicht, dass es sich um ein Duplikat dieser anderen Fragen handelt, aber ihre Antworten sollten Ihnen helfen.
Cookies gegen Sitzung
Cache VS Session VS Cookies?
Was ist der Unterschied zwischen einer Sitzung und einem Cookie?
quelle
Ich persönlich verwende sowohl Cookies als auch Sitzungen.
Cookies werden nur verwendet, wenn der Benutzer das Kontrollkästchen "An mich erinnern" aktiviert. Außerdem werden Cookies verschlüsselt und Daten nur auf dem Server entschlüsselt . Wenn jemand versucht, Cookies zu bearbeiten, kann unser Entschlüsseler diese erkennen und die Anfrage ablehnen.
Ich habe so viele Websites gesehen, auf denen Anmeldeinformationen in Cookies gespeichert sind , dass jeder einfach die ID und den Benutzernamen des Benutzers in Cookies ändern kann, um auf ein Konto zuzugreifen.
Vielen Dank,
quelle
Sitzung und Cookie sind nicht dasselbe.
In einer Sitzung werden die Informationen von den Webseiten gespeichert. Normalerweise haben Webseiten keine Speicher zum Speichern dieser Informationen. Aber mit können wir die notwendigen Informationen speichern.
Cookie wird jedoch verwendet, um die Benutzer zu identifizieren. Mit Cookies können wir die Daten speichern. Es ist ein kleiner Teil der Daten, die im Webbrowser des Benutzers gespeichert werden. Wenn der Benutzer das nächste Mal im Browser surft, sendet er die Cookie-Dateninformationen an den Server zurück, um die vorherigen Aktivitäten abzurufen.
Credits: Sitzung und Cookie
quelle
In Sitzungen können Sie einzelne Informationen wie bei Cookies speichern, die Daten werden jedoch auf dem Server anstatt auf dem Client gespeichert.
quelle
Wie andere sagten, sind Sitzungen klug und haben den größeren Vorteil, die Informationen vor dem Kunden zu verbergen.
Cookie hat jedoch noch mindestens einen Vorteil : Sie können über Javascript auf Ihre Cookies zugreifen (z . B. ngCookies ). Mit einer PHP-Sitzung können Sie außerhalb des PHP-Skripts nirgendwo darauf zugreifen.
quelle
Ich werde Sitzung auswählen. Zunächst ist die Sitzung sicherer als Cookies, Cookies sind Client-Site-Daten und Sitzung sind Server-Site-Daten. Cookies werden verwendet, um einen Benutzer zu identifizieren, da es sich um kleine Codeteile handelt, die in meinen Server mit dem Computer des Benutzers eingebettet sind. Auf der anderen Seite hilft Ihnen Session dabei, Ihre Identität zu sichern, da der Webserver nicht weiß, wer Sie sind, weil die HTTP-Adresse den Status 192.168.0.1 in 765487cf34ert8ded ändert… ..oder andere Nummern mithilfe von GET- und POST-Methoden. In der Sitzung werden Benutzerdaten in einer Sitzung mit eindeutiger ID gespeichert, die selbst mit der Benutzer-ID nicht übereinstimmen können. In der Sitzung werden Einzelbenutzerinformationen auf allen Seiten einer Anwendung gespeichert. Das Ablaufen von Cookies wird mit Hilfe von setcookies () festgelegt, während das Ablaufen von Sitzungen nicht festgelegt wird. Es läuft ab, wenn Benutzer Browser deaktivieren.
quelle
Eine Sitzung ist eine Gruppe von Informationen auf dem Server, die den Cookie-Informationen zugeordnet sind. Wenn Sie PHP verwenden, können Sie die Sitzung überprüfen. Speichern Sie den Pfadpfad und sehen Sie tatsächlich "Sitzungen sehen". Ein Cookie ist ein Ausschnitt von Daten, die an Clients gesendet und von diesen zurückgegeben werden. Cookies werden häufig verwendet, um Sitzungen zu vereinfachen, da sie dem Server mitteilen, welcher Client welche Sitzung verarbeitet hat. Es gibt andere Möglichkeiten, dies zu tun (Magie von Abfragezeichenfolgen usw.), aber Cookies sind wahrscheinlich am häufigsten dafür.
quelle