Ist es besser, Benutzerdaten in einer Datenbank und nicht in Cookies zu speichern?[geschlossen]

StackOverflow https://stackoverflow.com/questions/3268159

Frage

geschlossene . Diese Frage ist stellungnahmebasiert . Es akzeptiert derzeit nicht Antworten.

Möchten Sie diese Frage verbessern? Aktualisieren Sie die Frage, sodass es mit Tatsachen und Zitaten von diesen Beitrag von beantwortet werden kann.

geschlossene vor 2 Jahren .

Diese Frage verbessern .

Warum speichern wir nicht die Cookie-Informationen von Website-Besuchern (Abonnenten) in der Datenbank, anstatt eine Datei auf dem Computer des Benutzers zu setzen. Ja, ich weiß, dass ich aus den folgenden Gründen dumm klinge:

    .
  1. Datenbankinformationen für jeden einzelnen Benutzer für immer kleiner "Chunk" der Daten sind schwierig.

  2. Es kann schwierig sein, Daten abzurufen, wenn der Datenbankserver heruntergefahren ist.

  3. Continuous-Anforderungen sind für jeden kleinen Information an den Webserver vorzunehmen.

  4. Mein Punkt ist, wenn wir die Daten des Benutzers in einer Datenbank speichern, und nicht in einer Datei auf dem Computer des Clients, können wir dem Kunden die Sicherheit bieten, indem wir keine anderen Organisationen oder anderen Sites (oder sogar Hacker) zulassen Greifen Sie auf die Informationen des Benutzers von den Cookies zu.

    Darüber hinaus können wir die Aktivitäten oder das Verhalten des Benutzers verfolgen. (Ich meine, wir wissen eigentlich nicht, was der Benutzer (clientseitige Aktivität) wie Daten-Manipulation tut.)

    Wenn Sie das Gefühl haben, dass es möglicherweise schwierig ist, Anforderungen an den Webserver kontinuierlich zu senden, dank Ajax ist dies nicht der Fall. Dies gibt eine Unterstützung für meine Position: Senden von Anfragen an einen Webserver, der mit AJAX einfach so einfach gemacht wird.

    ist es also eine gute Idee, die sensiblen Informationen des Benutzers in einer Datenbank zu speichern, anstatt eine kleine Datei auf die Maschine des Benutzers einzustellen?

    Um spezifisch zu sein, spreche ich nicht von Sessions!

War es hilfreich?

Lösung

Ihr Ansatz ist auf jeden Fall gültig, hat aber ein grundlegendes Problem (das wahrscheinlich der Grund dafür ist, warum Cookies an erster Stelle erzeugt wurden): Identifikation.

Wie können Sie den Benutzer einen vs. User B identifizieren, ohne einen Benutzernamen / ein Kennwort zu fragen?Cookies bieten eine einfache Möglichkeit, diese Differenzierung zu tätigen.Sobald der Benutzer identifiziert ist, werden Ihre Punkte vollständig gültig.

Im Allgemeinen sind sensible Informationen nicht in Cookies gespeichert.Diese Informationen werden am besten auf der Serverseite gespeichert (wie Sie angegeben).

Andere Tipps

Sensible Informationen sollten nicht in einem Cookie sein, ich stimme Ihnen dort zu.Es sollte irgendwoer serverseitig gespeichert werden, entweder in einer flachen Datei auf dem Server selbst oder in einer Datenbank.

Was Sie auf dem Client-Computer benötigen, ist ein kleiner Keks, der einen dunklen, schwer zu erratenen Bezug auf diese sensiblen Daten enthält.

Glückwunsch!Du hast gerade die Sitzungen neu erfunden!

(Webervers können eingerichtet werden, um Sitzungsdaten in einer Datenbank anstelle von in flachen Dateien auf dem Server zu speichern, wenn Sie diese Art und Weise bevorzugen.)

Es stimmt, dass die herkömmliche Weisheit vermeiden soll, Cookies für sensible Daten zu verwenden, da sie auf dem Client gespeichert sind, und ein Hacker kann mit ihnen basteln und möglicherweise Schäden führen.Es gibt jedoch einen zwingenden Grund, warum Cookies einen zweiten Blick wert sein könnte: Skalierbarkeit.Es ist schwierig, einen leistungsstarken Pool von Sitzungsdaten für eine beliebige Anzahl von Cloud-Servern zur Verfügung zu haben:

http://aws.typepad.com/aws/2012/04/scalable-session-handling-in-php-using-amazon-dynamodb.html

Hier ist ein Link, den ich gefunden habe, der in hervorragendem, wie ein sicheres Cookies-System erstellt werden kann:

http://www.cse.msu.edu/~Alexliu / Publikationen / Cookie / Cookie.pdf

Es könnte also sein, dass das Alte wieder neu ist.

Generally we use cookies because we're not necessarily setting any sensitive data in them. If your application does has sensitive data that you don't want anybody fiddling with then by all means use every server-side and DB tool at your disposal to solve that, but not all applications and implementations need that level of security in these respects. Setting cookies is for convenience, that's all.

This is done already, or we'd be storing user names, addresses, and credit card information in a cookie rather than on the database. You have to evaluate what makes sense to keep in the database vs. what makes sense to store as a cookie. Server performance, bandwidth, scalability - all of these have to be kept in mind. Remember that the more we store server side, the more we'll have to deliver client-side.

You also mention sessions - sessions are cookies (kinda).

I came across this post whilst looking for some similar advice related to the cookie vs database argument.

Say, I have some user data in the form of integer lists, i.e. some bookmarked products, a max of 80 per user.

In the database, this could transpose to say 4 tables (1 for each data type), so that's 20 rows per user.

If you had a million unique visitors per annum and for arguments sake 70% were guest users as opposed to members, then this could add 14m rows to a table, which otherwise might be just 6m rows. Of course you could have a cull policy for guest users, but that becomes awkward to manage accurately - whats to say a user doesn't return after 9 months to find his/her data wiped.

The other side of the coin is that guest data is stored in cookies, so it doesn't matter how long its stored. I appreciate that more work is involved managing two storage methods but thats the only downside I can think of.

Anyone got any views on this, as I'd appreciate some advice.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top