Saltar al contenido

Cookie de SameSite en la aplicación Java

Revisamos de forma profundamente cada reseña en nuestra página web con la meta de mostrarte en todo momento información más veraz y actual.

Solución:

No soy un experto en JEE, pero creo que debido a que la propiedad de la cookie es una invención algo nueva, no puede esperar que esté presente en las interfaces o implementaciones de Java EE 7. los Cookie A la clase le falta un setter para propiedades genéricas, como parece. Pero en lugar de agregar la cookie a su HttpServletResponse a través de

response.addCookie(myCookie)

simplemente puede configurar el campo de encabezado HTTP correspondiente a través de

response.setHeader("Set-Cookie", "key=value; HttpOnly; SameSite=strict")

Actualizar: Gracias a @mwyrzyk por señalar que setHeader() sobrescribe todos los encabezados existentes del mismo nombre. Entonces, si sucede que tiene otro Set-Cookie encabezados en su respuesta ya, por supuesto que usaría addHeader() con los mismos parámetros en su lugar.

Si no desea actualizar todo su código, también puede lograr lo mismo con una configuración de línea utilizando la configuración de Apache o Nginx (o cualquier otro servidor HTTP/proxy que esté utilizando)

1 Configuración de las cookies de SameSite mediante la configuración de Apache

Puede agregar la siguiente línea a su configuración de Apache

Header always edit Set-Cookie (.*) "$1; SameSite=Lax"

y esto actualizará todas sus cookies con SameSite=Lax bandera

Ver más aquí: https://blog.giantgeek.com/?p=1872

2 Configuración de las cookies de SameSite mediante la configuración de Nginx

location / 
    # your usual config ...
    # hack, set all cookies to secure, httponly and samesite (strict or lax)
    proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";

Lo mismo aquí, esto también actualizará todas sus cookies con SameSite=Lax bandera

Vea más aquí: https://serverfault.com/questions/849888/add-samesite-to-cookies-using-nginx-as-reverse-proxy

A partir de hoy (24.01.20) servlet-api no deja fijar sameSite attribute a la galleta. Por cierto, hay un ticket en curso (LINK) que lanzará un nuevo (5.0 o 5.1 servlet-api).

Opción 1: No tienes prisa y puedes esperar servlet-api versión, donde Cookie clase y SessionCookieConfig la clase tiene métodos dedicados para establecer sameSite attribute.

Opcion 2: Está utilizando una versión antigua de servlet-api (por ejemplo, 3.1), en consecuencia, la versión anterior de Tomcat (por ejemplo, tengo la situación actual ahora). Significa incluso cuando la comunidad lanza servlet-api con sameSite soporte, no puede actualizar su versión de inmediato, ya que puede ser demasiado arriesgado actualizar un par de versiones principales.
En este caso hemos encontrado una solución.
Hay un Cookie Processor ComponentLINK en Tomcat, que

El elemento CookieProcessor representa el componente que analiza los encabezados de cookies recibidos en objetos javax.servlet.http.Cookie accesibles a través de HttpServletRequest.getCookies() y convierte los objetos javax.servlet.http.Cookie agregados a la respuesta a través de HttpServletResponse.addCookie() a HTTP encabezados devueltos al cliente.

El uso de este procesador es bastante sencillo. Dentro de context.xml:


    ...
    

En este caso, se utiliza la implementación predeterminada del procesador (org.apache.tomcat.util.http.Rfc6265CookieProcessor), pero puede especificar cualquier otro dentro de un CookieProcessor attribute className.

valoraciones y comentarios

Si conservas alguna desconfianza y disposición de mejorar nuestro post puedes escribir una explicación y con mucho gusto lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *