¿Dónde consigo SECRET_KEY para Flask?

4 minutos de lectura

Avatar de usuario de Tendi
Tendi

Mientras intenta configurar Flask-DebugtoolbarEstoy obteniendo:

“DebugToolBar requiere una SECRET_KEY”.

donde consigo SECRET_KEY?

Avatar de usuario de Gray Li
Li gris

Obtenga la cadena aleatoria para la clave secreta:

Método 1: Usar os en Python 2/3:

>>> import os
>>> os.urandom(12)
'\xf0?a\x9a\\\xff\xd4;\x0c\xcbHi'

Método 2: Usar uuid en Python 2/3:

>>> import uuid
>>> uuid.uuid4().hex
'3d6f45a5fc12445dbac2f59c3b6c7cb1'

Método 3: Usar secrets en Python >= 3.6:

>>> import secrets
>>> secrets.token_urlsafe(16)
'Drmhze6EPcv0fN_81Bj-nA'
>>> secrets.token_hex(16)
'8f42a73054b1749f8f58848be5e6502c'

Método 4: Usar os en Python 3:

>>> import os
>>> os.urandom(12).hex()
'f3cfe9ed8fae309f02079dbf'

Establecer clave secreta en Flask

Método 1: Usar app.secret_key:

app.secret_key = 'the random string'

Método 2: Usar app.config:

app.config['SECRET_KEY'] = 'the random string'    

Método 3: Póngalo en su archivo de configuración:

SECRET_KEY = 'the random string'

Luego cargue el archivo de configuración del formulario de configuración:

app.config.from_pyfile('config.py')  # if your config file's name is config.py

avatar de usuario de rmn
rmn

los llave secreta es necesario para mantener seguras las sesiones del lado del cliente. Puede generar alguna clave aleatoria como se muestra a continuación:

>>> import os
>>> os.urandom(24)
'\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'

Simplemente tome esa clave y cópiela/péguela en su archivo de configuración

SECRET_KEY = '\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'

Ver Sesiones documentación

  • En Python 3, si prefiere una cadena simple (para almacenar en un archivo JSON, por ejemplo), puede convertirla en una cadena hexadecimal: import os; print(os.urandom(24).hex())

    –Daniel Waltrip

    23 de agosto de 2018 a las 19:14


  • ¿Podrías simplemente hacer SECRET_KEY = os.urandom(24)? Creo que esto genera una nueva clave cada vez, pero ¿sería eso un problema?

    – m13op22

    3 sep 2019 a las 21:22

  • Mi pregunta anterior se responde aquí.

    – m13op22

    3 sep 2019 a las 22:11

  • para la gente realmente perezosa como yo, aquí está la línea de @Daniel Waltrips que puede copiar y pegar en la línea de comando: python -c "import os; print(os.urandom(24).hex())"

    – ercyp

    20 de noviembre de 2019 a las 16:50

  • @ercyp o python -c "print(__import__('os').urandom(24).hex())"

    – Xbox Uno

    25 de abril de 2021 a las 0:20

Para usar la sesión en el matraz, debe configurar la clave secreta en la configuración de su aplicación. La clave secreta es una clave aleatoria que se utiliza para cifrar sus cookies y guardarlas para enviarlas al navegador.

Este error se debe a esta línea en el código Flask-Debugtoolbar

Para arreglar esto, solo necesita configurar un SECRET_KEY en su archivo de configuración.

app.config['SECRET_KEY'] = "Your_secret_string"

o si tiene un archivo de configuración, simplemente agregue la configuración a continuación:

SECRET_KEY = "Your_secret_string"

Avatar de usuario de Prakashmm
Prakashmm

Abre Python, corre siguiéndote

import secrets
secret_key = secrets.token_hex(16)
# example output, secret_key = 000d88cd9d90036ebdd237eb6b0db000
app.config['SECRET_KEY'] = secret_key

Avatar de usuario de Sylvain
Silvano

Aquí hay una forma de almacenar la clave_secreta de Flask en un archivo oculto en lugar del código:

import secrets
from pathlib import Path

from flask import Flask

app = Flask(__name__)

SECRET_FILE_PATH = Path(".flask_secret")
try:
    with SECRET_FILE_PATH.open("r") as secret_file:
        app.secret_key = secret_file.read()
except FileNotFoundError:
    # Let's create a cryptographically secure code in that file
    with SECRET_FILE_PATH.open("w") as secret_file:
        app.secret_key = secrets.token_hex(32)
        secret_file.write(app.secret_key)

Siempre es una buena idea almacenar secretos lejos del código versionado. Git es muy bueno para no perder datos. Esto incluye claves secretas y contraseñas 🙂

De acuerdo con la documentación de Flaskpuede usar el siguiente comando para generar el valor de SECRET_KEY:

python -c 'import secrets; print(secrets.token_hex())'

Es importante tener en cuenta lo siguiente:

No revele la clave secreta cuando publique preguntas o confirme código.

Avatar de usuario de Afi _
afi_

Recomiendo hacer hash con bcrypt hash y usar hexadecimal

# IMPORT
from flask_bcrypt import Bcrypt
import secrets

secret_key = secrets.token_hex(16) #Create HEX Key
bcrypt = Bcrypt(app) #Init Bcrypt
secret_key_hash = bcrypt.generate_password_hash(secret_key) #hash the HEX key with Bcrypt
app.config['SECRET_KEY'] = secret_key_hash #setup secret key

# Output like: $2b$12$Y0QMIGwksa5OhtOBF9BczuAJ0hYMUv7esEBgMMdAuJ4V.7stwxT9e

¿Ha sido útil esta solución?