zu viele Cookies

stikmata

Grünschnabel
Hallo ich weis nicht ob die frage in diesem forum richtig psitioniert ist aber ich habe ein Problem bzw eine Frage.

Auf meiner Webseite werden viele Daten von leuten abgefragt und zwischengespeichert (in Cookies).

Mein problem ist das am ende offtmals Cookies gelöscht werden, da zu viele erstellt werden.

Wie kann ich mehr Daten zwischenspeichern und wieder darauf zugreifen?

Über die Post variante werden es auch zu wenig sein.
 
Session ist natürlich ein cooles Feature von PHP, aber genau dort fängt der Glaubenskrieg an. Um Daten von einer Seite zur nächsten durchzureichen gibt es natürlich auch andere Möglichkeiten.

z.B. über den get Parameter

man codiert es in einen Url conformen String, selbst arrays kann man so übertragen.
PHP:
function base64url_encode($data) {
                return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
        }

will man sie dann wieder als Daten haben, dann gibt es diese Funktrion.
PHP:
function base64url_decode($data) {
 return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
}
Wie das Beispiel zeigt, ist es nur eine Frage der Programmierung. Gute Programmierung zeichnet sich dadurch aus, gänzlich ohne Session auszukommen.

SCHLUSSWORT: Cookies alias Sessions sollen nur den Benutzer wieder erkennen oder Benutzer spezifische Daten speichern die nicht relevant sind. Stichwort Cookie Manipulation.
 
Zuletzt bearbeitet von einem Moderator:
Das Problem bei Cookies ist, dass man sie wenn schon verschlüsselt speichern sollte, denn sonst könnte man die Daten sehr einfach ändern.

Nehmen wir an, man prüft, ob jemand ein Admin ist mit folgendem Code:
PHP:
function isAdmin()
{
  if ( isset($_COOKIES['admin']) && $_COOKIES['admin']==="1" )
    return true;
  return false;
}
Dann bräuchte man nur so ein Cookie erstellen oder vielleicht sogar nur ändern, auf den Wert 1 legen und fertig!

Wie das Beispiel zeigt, ist es nur eine Frage der Programmierung. Gute Programmierung zeichnet sich dadurch aus, gänzlich ohne Session auszukommen.
Das sehe ich nicht so. Wo willst du denn sensible Daten (wie den gerade angemeldeten Nutzer) speichern?
Du hast ja selber das Stichwort erwähnt: Cookie Manipulation.

Zwar sind PHP Sessions im Prinzip auch nur ein Cookie, aber von der Clientseite her, kann man die Daten nicht einsehen oder gar verändern! Das kann nur jemand, der Zugriff zum Sessionspeicherort hat.
Man kann die Sessions auch in der Datenbank speichern (mittels eigenem Session-Handler), wenn man sie nicht (wie in der Standardeinstellung) in Dateien im temporären Ordner speichern möchte.
 
Da hast du natürlich recht, aber was manche Leute im Cookie speichern... ich habe es schon gesehen das der Cookie > 500kb war. Cookie in der DB ist ein guter Weg, zumal es ein muß bei Cloud computing alias Cluster(so nannte man es früher) ist. Wie ich schon geschrieben habe, der Cookie dient zum wieder erkennen, mehr nicht! Den Rest machst du über deine Programmierung und schon hast du keine Sicherheitsprobleme mehr... wenn du es richtig machst...:)

Achso... Den Get Parameter bekommt natürlich nur ein authentfizierter User, das habe ich da einfach mal vorausgesetzt.

Du solltest in dem Fall auch immer daran denken, das der Cokkie übertragen wird zum Client. Also ergo Performance geht gegen NULL. :)
 
Zuletzt bearbeitet von einem Moderator:
... ich habe es schon gesehen das der Cookie > 500kb war.
Cookies über 4KB werden denn von welchen Browser akzeptiert?

Cookie in der DB ist ein guter Weg,
Ein Cookie in der Datenbank? WTF Ein Cookie ist auf einem Clienten gespeichert.

Du solltest in dem Fall auch immer daran denken, das der Cokkie übertragen wird zum Client. Also ergo Performance geht gegen NULL. :)
Jeder Cookie wird nur einmal zum Clienten übertragen, außer er wird modifiziert. Danach schickt der Client die Cookie Informationen zum Server.

Gute Programmierung zeichnet sich dadurch aus, gänzlich ohne Session auszukommen.
Das ist ja mal völliger Quatsch!
 
Ja es sind mir schon ein paar Fehler unterlaufen...:)
Zum Ersten, ich meinte natürlich die Session, somit erklärt sich auch Zweitens und Drittens. Hatte das ein bisschen durcheinander gebracht.

Man kann natürlich alles in der Session speichern, nur wozu gibt es Get oder Post Variablen? Es ist doch toll, wenn ich auf eine Seite komme, wo dann steht "Sie müßen Cookies akzeptieren um die Seite sehen zu können".

Das ganze natürlich in einen Non Memberrange.... klasse...:)
 
Nicht, um (übertrieben) die ganze DB darin zu speichern.
Warum speichern? übertragen wäre richtig, speichern tut die Session eine Datei(liegt standardmäßig bei php im /tmp). Ich sage doch es ist ein Glaubenskrieg, wobei ich sagen muß es gibt wirklich sinnvolle Anwendungen für eine Session z.B. ein Warenkorb. Mir ging es nur darum zu zeigen daß es noch andere Möglichkeiten gibt. Klar können wir alles in einer Session speichern. Nur welchen Sinn bringt es?

Wer sagt denn, dass Sessions auf Cookies beschränkt sind?
Eine Session kann nur funktionieren, wenn ein Cookie gesetzt ist oder woher bekommst du die SID vom User? Ach ja SID als Get.... was hatte ich nochmal geschrieben....
 
Zurück