He estado desarrollando aplicaciones web desde hace bastante tiempo. Al crear sitios web, la función "Recordarme" es una de las funciones más triviales (leer como imprescindible para los clientes) que se implementarán. Hasta hoy, solo estaba usando las implementaciones predeterminadas provistas por el sistema de autenticación ASP.NET, lo que debo decir es bastante seguro (siempre y cuando uno no juegue con la implementación predeterminada provista). Pero hoy, solo sentí curiosidad por los detalles de implementación de esta característica. Investigué un poco y revisé algunos artículos relacionados:
Troy Hunt: cómo y cómo no construir
Mejores prácticas de cookies de inicio de sesión persistentes
El artículo de Troy básicamente llega a la conclusión de que, si es posible, es mejor que no implementes esta función, ya que no importa lo que hagas, a pesar de tus mejores esfuerzos, siempre tendrás que ir a un compromiso relacionado con la seguridad. De manera similar, el artículo de Barry, basado en el diseño de Miller, Charles, tiene algunos pasos estratégicos muy agradables para minimizar la superficie de ataque y complicar el vector de ataque.
Por lo tanto, al llegar al punto principal, después de leer estos artículos, una cosa que surgió en mi mente fue, why are the cookies not signed by the browsers ? Wouldn't it be best if each browser-client (mobile/desktop/whatever), had their own unique GUID kind of thing, which was not to be modified(under any circumstances), and then they can send their GUID to the servers, and the server could then use as the key-value to decrypt/verify any client-side information(cookies/querystrings) ?
Wouldn't this solve the issue of session-hijacking/cookie-hijacking completely, as a cookie from one browser would then be totally useless for another browser ?
Lo siento si esto suena ingenuo, pero realmente agradecería sugerencias y comentarios sobre esto. Gracias.