Pregunta

¿Es seguro usar dicho código?

Response.Cookies[cookieName].Path = Request.ApplicationPath + "/";

Quiero saber acerca de todos los casos de esquina, por favor ...

¿Fue útil?

Solución

En resumen, no, no es seguro. Utilización de rutas de galletas está plagado de problemas, ya que son mayúsculas y minúsculas en el IE y Chrome, pero no FF. Esto significa que cualquier desajuste en caso camino será meter las cosas.

  1. Cuando se genera una cookie, si la ruta se establece en caso difiere de lo que el usuario escribió, los navegadores no almacenarlo.

  2. Cuando los rendimientos de los usuarios, si la ruta que entren difiere en el caso del primer viaje, el navegador no suministrar la cookie con la solicitud.

¿Cuál es el problema que trata de resolver?

Otros consejos

Si la aplicación se ejecuta en la raíz de un dominio, Request.ApplicationPath == "/". Por lo tanto, con su código, la ruta de la cookie se //. Usted puede esquivar este problema al hacer esto:

cookie.Path = Request.ApplicationPath;
if (cookie.Path.Length > 1) cookie.Path += '/';

¿Se señala correctamente , tendrá que asegurarse de que su aplicación hace cumplir una carcasa consistente de direcciones URL (es decir redirigir todas las solicitudes con direcciones URL que contengan mayúsculas cartas a sus equivalentes en minúsculas).

Aparte de eso, creo que debe estar bien haciendo esto. Si desea que todos los cookies para ser "aplicación en el ámbito", considerar la creación de un IHttpModule personalizado con un código como éste (o extender global.asax.cs):

private void Application_EndRequest(object sender, EventArgs e)
{
    var app = (HttpApplication)sender;

    var cookiePath = app.Request.ApplicationPath;
    if (cookiePath.Length > 1) cookiePath += '/';

    foreach (string name in app.Response.Cookies.AllKeys)
    {
        var cookie = app.Response.Cookies[name];
        cookie.Path = cookiePath;
    }
}

No, no es seguro, por las razones que se especifican.

Pero ... Usted puede querer emplear esta técnica para cumplir con su intención.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top