SESSION_COOKIE_SECURE no cifra la sesión

Estoy tratando de poner algo de seguridad en mi aplicación web Flask. Como primer paso, haré que mi cookie de sesión sea segura configurando SESSION_COOKIE_SECURE en verdadero.

Pero después de obtener mi cookie de sesión de “inspeccionar elemento” puedo decodificar la cookie de sesión fácilmente y no hay diferencia si agrego SESSION_COOKIE_SECURE o no.

Aquí está mi código:

 from flask import Flask, request, app, render_template, session, send_file, redirect MyApp = Flask(__name__) MyApp.secret_key = "something" application = MyApp if __name__ == "__main__": MyApp.debug = False MyApp.config.update( SESSION_COOKIE_SECURE=True, SESSION_COOKIE_HTTPONLY=True, SESSION_COOKIE_SAMESITE='Lax', ) MyApp.config["SESSION_PERMANENT"] = True MyApp.run() 

También intenté agregar este atributo usando la siguiente syntax, pero esto no hizo ninguna diferencia:

  MyApp.config['SESSION_COOKIE_SECURE'] = True 

Cuando bash imprimir SESSION_COOKIE_SECURE obtengo este error

 Traceback (most recent call last): File "...", line ..., in  print(MyApp.session_cookie_secure) AttributeError: 'Flask' object has no attribute 'session_cookie_secure' 

Mi versión de Flask es 1.0.2, y estoy en HTTPS.

La configuración de SESSION_COOKIE_SECURE no cifra el valor de la cookie, no. Cuando se establece, esto hace que Flask cree cookies con el indicador “Seguro” establecido . Esto significa que un navegador solo puede devolver la cookie al servidor a través de una conexión encriptada, nada más. La configuración no cambia nada sobre el valor de la cookie en sí.

Flask produce cookies que están firmadas criptográficamente, de forma predeterminada. Eso significa que el contenido de la cookie puede decodificarse pero no modificarse , ya que un tercero sin acceso al secreto del servidor no puede crear una firma válida para la cookie.

Por lo general, no necesita cifrar su cookie de sesión si: a) utiliza HTTPS (que encripta los datos de terceros) yb) protege su aplicación web de los ataques XSS. Sin un vector de ataque XSS, los atacantes no pueden acceder a los contenidos de sus cookies de ninguna manera.

Ciertamente no necesita hacerlo aquí, ya que SESSION_COOKIE_HTTPONLY significa que el navegador nunca expondrá la cookie a JavaScript, y solo alguien con acceso completo al navegador puede ver el valor de la cookie.

Flask no tiene una configuración de ‘cifrar cookie’, porque no se considera necesario cuando se puede asegurar la cookie de otras maneras. No debe almacenar información en una cookie de sesión tan sensible que debe estar protegida del usuario final con acceso al almacenamiento del navegador; mantenga dichos datos en el servidor y solo almacene un identificador único en la sesión para recuperar esos datos secretos más adelante.

Si, por alguna razón, no puede ocultar tales secretos fuera de la cookie de sesión y no está dispuesto a aceptar que el usuario final pueda leer estos datos, tendrá que cifrar la cookie usted mismo o usar un proveedor de sesión alternativo para Flask. tales como EncryptedSession .


En cuanto al error de atributo: solo unos pocos ajustes de configuración son accesibles como atributos en el objeto Flask . Para imprimir ajustes de configuración arbitrarios, use el objeto app.config :

 print(MyApp.config['SESSION_COOKIE_SECURE'])