Parece que todo el problema podría resolverse de manera muy elegante simplemente agregando un nuevo indicador a la especificación de la cookie HTTP.
De forma similar a como las cookies marcadas Secure
solo serán enviadas por el agente de usuario a través de conexiones seguras y las que están marcadas HttpOnly
serán inaccesibles para siempre a través del acceso DOM, ¿por qué no especificar una nueva bandera, por ejemplo, NoCSR
, o SameOriginOnly
, que, cuando se establece, evitaría que la cookie se envíe con solicitudes activadas por referencias de origen cruzado?
Por supuesto, se desactivaría de forma predeterminada para no romper el comportamiento esperado anteriormente para los sitios web existentes, según Principio de diseño HTML5 # 2.1 . Supongo que existe un agujero de seguridad, pero no uno que no se puede resolver fácilmente: no se puede depender de manera indiscriminada, porque los navegadores antiguos presumiblemente ignorarían la bandera no reconocida.
Entonces, ¿por qué no crear una enumeración en la lista blanca de NoCSR
para implementar las cadenas UA correspondientes de las versiones de los agentes de usuario, y luego solo aceptar / procesar solicitudes sensibles y que requieran autorización que tengan uno de esos valores de User-Agent:
? Para solicitudes enviadas con encabezados de AU no listados o no incluidos en la lista blanca, se puede devolver un error que razonablemente exige que el usuario actualice a una versión de navegador compatible.
La lista blanca se podría SECAR con bibliotecas de implementación canónicas (probablemente sería más como una única función simple) para varios idiomas del lado del servidor.
¿No parece esto mucho más simple que el sistema actual de generación, seguimiento y lectura de tokens CSRF seguros?
Pensamientos, alguien?