Cookies

  • Hai Leute,

    hab gerade etwas recherchiert, aber nichts auf die Schnelle gefunden.
    Wie groß darf ein Cookie bei Firefox sein? Lauf RFC 2109 mindestens 4k, aber im Internet find ich mehrere Quellen, die die Zahl auf (maximal) 4k beziffern.

    Kann jemand aus dem Stand eine genaue Zahl zu Firefox liefern? Gern auch mit einer Quellenangabe, damit ich einen Ansatzpunkt für meine Recherche habe.

    ciao
    kescha

  • Hi kescha,

    willkommen hier im Forum :)

    Da der Firefox ein Nachfahre des Netscape ist, würde ich sagen, dass auch hier die 4k-Regel greift.

    ...:AOD:...

    HP Chromebook 15a-nb0225ng, i3N-305, 8 GB LPDDR5-4800 MHz RAM (integriert), 256GB UFS, - chromeOS 135 (Stable Channel) - Linux Debian Bookworm: Firefox Nightly, Beta und Main Release (Mozilla PPA), Android 13: Firefox Nightly und Firefox (Main Release)

    Smartphone - Firefox Main Release, Firefox Nightly

  • Meines Wissens nach waren die 4k Vorgabe um als Cookie zu gelten. Auch mussten irgendwie 10 (oder waren es 20?) Cookies pro Domain möglich sein. In der Realität passte da aber immer mehr rein. Frag mich aber nicht wieviel mehr.

    Der Firefox bietet darüber hinaus noch den DOM Storage an, das so genannte "Monster-Cookie", was bis 5mb Platz bietet.

    Zitat

    Cookie specifications[3][4] suggest that browsers should support a minimal number of cookies or amount of memory for storing them. In particular, an internet browser is expected to be able to store at least 300 cookies of 4 kilobytes each, and at least 20 cookies per server or domain.

    Relevant count of maximum stored cookies per domain for the major browsers are:

    * Firefox 1.5: 50
    * Firefox 2.0: 50
    * Opera 9: 30
    * Internet Explorer 6: 20 (raised to 50 in update on 14 August 2007)
    * Internet Explorer 7: 20 (raised to 50 in update on 14 August 2007)

    In practice cookies must be smaller than 4KB. Internet Explorer imposes a 4KB total for all cookies stored in a given domain.

    Cookie names are case insensitive according to section 3.1 of RFC 2965

  • Zitat

    Lauf RFC 2109 mindestens 4k, aber im Internet find ich mehrere Quellen, die die Zahl auf (maximal) 4k beziffern.


    Dort heißt es, dass ein Client mindestens die 4k speichern können sollte. Daraus ergibt sich im Umkehrschluss, dass man als Programmierer der Server-Anwendung sich nur auf die 4k verlassen kann. Es ist also eine Frage des Blickwinkels. Somit ergibt sich aus der RFC eine Obergrenze, wobei diese natürlich von UAs getoppt werden darf.

  • Zitat von boardraider


    Dort heißt es, dass ein Client mindestens die 4k speichern können sollte. Daraus ergibt sich im Umkehrschluss, dass man als Programmierer der Server-Anwendung sich nur auf die 4k verlassen kann. Es ist also eine Frage des Blickwinkels. Somit ergibt sich aus der RFC eine Obergrenze, wobei diese natürlich von UAs getoppt werden darf.

    Leider gilt das nur im optimalstem Fall. Die meisten Browser sind sehr lässig mit der RFC implementierung. Wie im Zitat aus Wikipedia von Bugcatcher ist es leider so, dass z.B. IE 4KB für alle Cookies einer kompletten Domain bereitstellt, wobei die RFC 2965(5.3) besagt:

    Zitat


    User agents created for specific purposes or for limited-capacity
    devices SHOULD provide at least 20 cookies of 4096 bytes, to ensure
    that the user can interact with a session-based origin server.

    Ich sehe schon, dass Daten vom IE aus einer gesicherten Quelle zu kriegen, nicht einfach wird >_>

    DOM Storage ist leider zu Browser spezifisch.

  • Firefox Src-Code:
    mozilla/netwerk/cookie/src/nsCookieService.cpp

    Zitat

    // default limits for the cookie list. these can be tuned by the
    // network.cookie.maxNumber and network.cookie.maxPerHost prefs respectively.
    static const PRUint32 kMaxNumberOfCookies = 1000;
    static const PRUint32 kMaxCookiesPerHost = 50;
    static const PRUint32 kMaxBytesPerCookie = 4096;
    static const PRUint32 kMaxBytesPerPath = 1024;

    Zitat

    // reject cookie if it's over the size limit, per RFC2109
    if ((cookieAttributes.name.Length() + cookieAttributes.value.Length()) > kMaxBytesPerCookie) {
    COOKIE_LOGFAILURE(SET_COOKIE, aHostURI, cookieHeader, "cookie too big (> 4kb)");
    return newCookie;
    }