Definitive Anleitung für gültige Cookie-Werte

7

Ich weiß, dass es noch andere Fragen gibt, aber sie scheinen Antworten zu haben, die eher Annahmen als definitiv sind.

Mein begrenztes Verständnis ist, dass Cookie-Werte sind:

  • Semikolons werden bereits verwendet, um die Cookie-Attribute innerhalb eines einzelnen Cookies zu trennen.
  • Gleichheitszeichen werden verwendet, um die Namen und Werte von Cookies zu trennen
  • Doppelpunkte werden verwendet, um mehrere Cookies innerhalb eines Headers zu trennen.

Gibt es noch andere "Sonderzeichen"?

Einige andere q / a schlagen vor, dass ein base64 den Wert kodiert, aber das kann natürlich Gleichheitszeichen enthalten, die natürlich nicht gültig sind.

Ich habe auch einige Vorschläge gesehen, dass Werte zitiert werden können, dies führt jedoch zu anderen Fragen.

  • müssen die Sonderzeichen zitiert werden?
  • do quoted values ​​unterstützen die üblichen Backslash-Escaping-Mechanismen.

RFC Ich lese ein paar RFCs einschließlich einiger der vielen Cookie-RFCS, aber ich bin immer noch unsicher, da es einen Querverweis zu einem anderen RFC usw. gibt, ohne eine definitive einfache Erklärung oder ein Beispiel, das meine Anfrage "beantwortet".

Hoffentlich wird niemand sagen, lesen Sie den RFC, weil die Frage wird, welche RFC ...?

Ich glaube, ich habe auch gelesen, dass verschiedene Browser leicht abweichende Regeln haben. Bitte beachten Sie dies in Ihren Antworten, wenn es darauf ankommt.

    
mP. 24.05.2011, 09:13
quelle

2 Antworten

21

Der neueste RFC ist 6265 und besagt, dass vorherige Cookie-RFCs veraltet sind.

>

Hier ist, was die Syntaxregeln im RFC sagen:

%Vor%

Also:

  • Die Sonderzeichen sind Leerzeichen, Anführungszeichen, Komma, Semikolon und Backslash. Equals ist kein Sonderzeichen.

  • Die Sonderzeichen können überhaupt nicht verwendet werden, mit der Ausnahme, dass doppelte Anführungszeichen den Wert umgeben können.

  • Sonderzeichen können nicht zitiert werden.

  • Backslash fungiert nicht als Escape.

Daraus folgt, dass die Basis-64-Codierung verwendet werden kann, da equals keine Besonderheit ist.

Abschließend kann ich sagen, dass die RFC 6265-Cookie-Werte so definiert sind, dass sie mit jedem Browser funktionieren, der eine der Cookie-RFCs implementiert. Wenn Sie jedoch versucht haben, Cookie-Werte zu verwenden, die RFC 6265 nicht entsprechen (aber wohl früheren RFCs entsprechen), können Sie feststellen, dass das Verhalten von Cookies bei verschiedenen Browsern variiert.

Kurz gesagt, entsprechen Sie dem Brief von RFC 6265 und Sie sollten in Ordnung sein.

    
Stephen C 24.05.2011, 11:45
quelle
0

Da base64 erwähnt wurde, ist hier eine gekochte Cookie-Lösung, die Cookies verwendet. Die Funktionen beziehen sich auf eine modifizierte Version von base64, sie verwenden nur [0-9a-zA-Z _-]

Sie können es sowohl für den Namen als auch für den Wert von Cookies verwenden, ist binär sicher, wie sie sagen.

Das gzdeflate / gzinflate nimmt 30% oder so Raum zurück, der von base64 geschaffen wird, konnte nicht widerstehen, es zu verwenden. Beachten Sie, dass php gzdeflate / gzinflate nur in den meisten Hosting-Unternehmen verfügbar ist, nicht in allen.

%Vor%     
Johan 28.02.2013 00:07
quelle

Tags und Links