rumores real mbappe madrid fichajes confirmados http cookies cross-browser standards

http - real - ¿El nombre de una cookie es sensible?



real madrid fichajes mbappe (5)

De acuerdo con RFC 2109 - Los nombres de las cookies de los Mecanismos de Gestión de Estado HTTP HTTP son insensibles a las mayúsculas y minúsculas :

4.1 Sintaxis: General

Los dos encabezados de administración de estado, Set-Cookie y Cookie, tienen propiedades sintácticas comunes que implican pares de valor-atributo. La siguiente gramática usa la notación y los símbolos DIGIT (dígitos decimales) y token (informalmente, una secuencia de caracteres no especiales, no blancos) de la especificación HTTP / 1.1 [RFC 2068] para describir su sintaxis.

av-pairs = av-pair *(";" av-pair) av-pair = attr ["=" value] ; optional value attr = token value = word word = token | quoted-string

Los atributos (nombres) (attr) no distinguen entre mayúsculas y minúsculas. Se permite espacio en blanco entre tokens. Tenga en cuenta que, si bien la descripción de sintaxis anterior muestra el valor como opcional, la mayoría de los attrs lo requieren.

Una cookie HTTP consiste en un par nombre-valor y puede ser configurada por el servidor usando esta respuesta:

HTTP/1.0 200 OK Content-type: text/html Set-Cookie: name=value Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT

Las solicitudes futuras del cliente se verán así:

GET /spec.html HTTP/1.1 Host: www.example.org Cookie: name=value; name2=value2

¿El nombre de la cookie es sensible?

Por ejemplo, si mi servidor envía una respuesta como tal:

HTTP/1.0 200 OK Content-type: text/html Set-Cookie: Aaaa=Bbbb Set-Cookie: aAaa=bBbb Set-Cookie: aaAa=bbBb Set-Cookie: aaaA=bbbB

¿Es razonable esperar que un cliente (Chrome, Firefox, Safari, IExplorer, Opera, etc.) envíe futuras solicitudes con el encabezado Cookie: Aaaa=Bbbb; aAaa=bBbb; aaAa=bbBb; aaaA=bbbB; Cookie: Aaaa=Bbbb; aAaa=bBbb; aaAa=bbBb; aaaA=bbbB; ?

Nota: La pregunta no es específica de JSP, específica de PHP ni específica de ASP.


En la parte inferior hay una secuencia de comandos que muestra la sensibilidad de las cookies en los navegadores y .Net framework. Cada vez que se ejecuta, insertará una cookie llamada xxxxxxxxxx, con mayúsculas / minúsculas aleatorias. Presione F5 para actualizar algunas veces para insertar algunas cookies.

Lo he probado en Chrome y Firefox, y ambos demuestran un comportamiento similar, algo como a continuación:

Request.Cookies["xxxxxxxxxx"].Name returns: xxxxXxXXXX All XXXXXXXXXX Cookies: xxxxXxXXXX xXxxXxXXXx XxxxxXxXXx XXXxXxXXxX

Muestra:

  • Las cookies distinguen entre mayúsculas y minúsculas en Chrome y Firefox
  • .Net Framework puede manejar cookies sensibles a mayúsculas y minúsculas (es por eso que podría recorrer todas esas cookies)
  • Request.Cookies ["xxxxxxxxxx"] no distingue entre mayúsculas y minúsculas (es por eso que devuelve la primera cookie que distingue entre mayúsculas y minúsculas el nombre)

Como se menciona en otras respuestas, el nuevo RFC indica que las cookies distinguen entre mayúsculas y minúsculas, y tanto Chrome como Firefox parecen manejarlo de esa manera. .Net Framework puede manejar cookies que distinguen entre mayúsculas y minúsculas, pero realmente desea tratar las cookies sin distinción de mayúsculas y minúsculas, y muchas de sus funciones sí las tratan de esa manera (Cookies [], Cookies.Set (), etc.). Esta incoherencia puede causar muchos errores difíciles de rastrear.

TestCookie.aspx:

<%@ Page language="c#" AutoEventWireup="false" validateRequest=false %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title id="title">Test Cookie Sensitivity</title> </head> <body> <p>Request.Cookies["xxxxxxxxxx"].Name returns: <% HttpCookie cookie2 = Request.Cookies["xxxxxxxxxx"]; if (cookie2 == null) Response.Write("No cookie found"); else Response.Write(cookie2.Name); %> </p> <h3>All XXXXXXXXXX Cookies:</h3> <ul> <% foreach (string key in Request.Cookies.Keys) if (key.ToLower() == "xxxxxxxxxx") Response.Write("<li>" + key + "</li>"); Random rand = new Random(); StringBuilder name = new StringBuilder(); for (int i = 0; i < 10; i++) { if (rand.Next(2) == 0) name.Append(''x''); else name.Append(''X''); } HttpCookie cookie = new HttpCookie(name.ToString()); cookie.HttpOnly = true; cookie.Expires = DateTime.Now.AddMonths(1); Response.Cookies.Add(cookie); %> </ul> </body> </html>


Los nombres de las cookies distinguen mayúsculas de minúsculas El RFC no lo establece explícitamente, pero cada comparación insensible a mayúsculas y minúsculas se establece de manera explícita, y no existe una declaración explícita sobre el nombre de la cookie. Tanto Chrome como Firefox tratan las cookies como sensibles a mayúsculas y preservan todas las variantes de casos como cookies distintas.

Caso de prueba (PHP):

print_r($_COOKIE); setcookie(''foo'', ''123''); setcookie(''Foo'', ''456'');

Cargue el script dos veces, observe el volcado de $_COOKIE en la segunda ejecución.


Parece que las cookies realmente distinguen entre mayúsculas y minúsculas. Hay algo de confusión con esto. Es interesante que MSDN diga lo contrario:

Los nombres de las cookies NO son sensibles a las mayúsculas

Fuente: http://msdn.microsoft.com/en-us/library/ms970178.aspx La parte inferior del artículo dice que es ©2002 por lo que podría estar desactualizado.

Además, también se ha formulado la pregunta en los foros de asp.net: http://forums.asp.net/t/1170326.aspx?Are+cookie+names+case+sensitive+ y parece que la respuesta es sensible a las mayúsculas y minúsculas .

¿Que esta pasando? MSDN dice que no, otras tecnologías dicen que sí. Para estar seguro, probé esto usando ASP clásico.

Código

hashUCASE = Request.Cookies("data")("Hash") hashLCASE = Request.Cookies("data")("hash") Response.Write "<p> hashUCASE = " & hashUCASE Response.Write "<br> hashLCASE = " & hashLCASE cookieNameUCASE = Request.Cookies("Data") cookieNameLCASE = Request.Cookies("data") Response.Write "<p> cookieNameUCASE = " & cookieNameUCASE Response.Write "<br> cookieNameLCASE = " & cookieNameLCASE Response.End

Resultados

hashUCASE: EE3305C0DAADAAAA221BD5ACF6996AAA hashLCASE: EE3305C0DAADAAAA221BD5ACF6996AAA cookieNameUCASE: name=1&Hash=EE3305C0DAADAAAA221BD5ACF6996AAA cookieNameLCASE: name=1&Hash=EE3305C0DAADAAAA221BD5ACF6996AAA

Como puede ver en los resultados, el valor "Hash" se creó con mayúsculas e incluso cuando realiza la solicitud con minúsculas, devuelve el mismo valor, lo que hace que no distinga entre mayúsculas y minúsculas. Bajo esta tecnología MS, no lo es.

Conclusión

Entonces, usando Request.Cookies () en ASP clásico, no distingue entre mayúsculas y minúsculas, como dice Microsoft. Pero espera, ¿no es sensible a mayúsculas de nuevo? Esto puede significar que, ya sea sensible o no, depende de la tecnología del lado del servidor que realiza la solicitud al navegador, lo que podría normalizar el nombre de la cookie para realizar las solicitudes y, por lo tanto, no hacer distinción entre mayúsculas y minúsculas. Pero eso es algo más que tendremos que probar para verificar.

Mi consejo es hacer pruebas con la tecnología que esté utilizando y establecer un estándar en su base de códigos, hacer un acuerdo con su equipo. es decir, si va a utilizar una cookie, decida si siempre se escribirá en minúsculas o mayúsculas cada vez que vaya a utilizarla en su código. De esta forma no habrá ningún problema de sensibilidad de mayúsculas ya que en su código siempre se declarará con el mismo caso.

tl; dr

Siempre que mantenga una convención con los nombres de las cookies, no tendrá problemas con la distinción entre mayúsculas y minúsculas.


Según http://msdn.microsoft.com/en-us/library/ms970178.aspx , el nombre de las cookies NO distingue entre mayúsculas y minúsculas. Sin embargo, no estoy seguro de si eso es solo la implementación específica de ASPX / IIS. Creo que depende del servidor web y del idioma también.

Si envía una cookie llamada "UserID", el navegador se asegurará de que la devuelva como "UserID", no como "userid".