Clé secrète de Flask

Salman Mehmood 18 aout 2022
Clé secrète de Flask

Cet article concerne la clé secrète dans Flask.

  1. Qu’est-ce qu’une clé secrète ?
  2. Pourquoi devons-nous l’utiliser pendant la session ?
  3. Comment pouvons-nous générer la clé secrète de différentes manières ?
  4. En quoi est-ce utile lorsque vous travaillez avec la barre d’outils debug dans Flask ?

Générer la clé secrète de différentes manières dans Flask et Python

Pour accéder à un identifiant de session, il faut utiliser une clé de chiffrement attribuée à la variable SECRET_KEY, donc à l’époque, on fixe la valeur de la variable SECRET_KEY car une chaîne est extrêmement dangereuse. Cette clé doit être générée aléatoirement.

Pourquoi est-ce si important? Eh bien, si le client essaie de manipuler des données dans l’ID de session, nous voulons qu’elles soient rejetées par le serveur.

Si le client peut d’une manière ou d’une autre deviner la clé secrète, il peut générer ses données de session que le serveur ne rejettera pas, et vous pouvez probablement le deviner ; c’est pourquoi ce n’est pas une bonne pratique.

Alors, à quoi sert l’ID de session ? Eh bien, il est stocké dans un cookie et utilisé pour relier l’utilisateur afin de spécifier des données côté serveur, telles que des informations sur l’utilisateur dans la base de données.

La question devient alors : comment générer une clé véritablement aléatoire ?

Allons-y et tournons-nous vers Flask docs ; si nous faisons défiler jusqu’à la section où il est indiqué comment générer de bonnes clés, selon la documentation, votre système d’exploitation a des moyens de générer des éléments assez aléatoires basés sur un générateur cryptographique aléatoire qui peut être utilisé pour obtenir une telle clé.

Tout en suivant les docs, nous ouvrons un shell Python et importons le module os, puis utilisons la fonction urandom() et passons 24 à l’intérieur de cette fonction afin que vous puissiez générer une chaîne aléatoire avec un lien de la taille de l’attribut lequel nous sommes passés.

import os

os.urandom(24)

Lorsque nous appuyons sur Enter ou l’imprimons, nous obtenons cette clé.

b'o\xe8\xc3VS\xf3\xf8\x0c\x80Y\xad\xb6\x86\xb3\x7f\xee\x98l\x80\xe47\xfb]}'

Cette clé secrète ne fonctionne pas pour votre application Flask, vous devez donc la générer à partir de votre système. Après avoir généré une clé, saisissez cette chaîne, revenez à l’application Flask et affectez-la à la variable SECRET_KEY.

Il existe plusieurs façons d’obtenir la clé secrète, et nous examinerons une autre façon de générer une clé hexadécimale. Pour générer cette clé, nous devons importer le module uuid, et depuis la fonction uuid4(), nous allons utiliser la propriété hex.

import uuid

uuid.uuid4().hex

Production:

'd5fb8c4fa8bd46638dadc4e751e0d68d'

Dans Flask, il existe une autre façon de définir une clé secrète par soi-même ; pour définir la clé secrète, nous pouvons utiliser le code suivant.

app.config["SECRET_KEY"] = "Define_The_Key"

Lorsque vous travaillez avec la barre d’outils debug dans l’application Flask, il est nécessaire de définir une clé secrète car DebugToolbarExtension ne fonctionne pas sans définir notre clé secrète dans l’application Flask. Nous pouvons utiliser n’importe quelle méthode pour définir une clé secrète.

Le code source complet de l’exemple.

from flask import Flask, render_template
from flask_debugtoolbar import DebugToolbarExtension

# import os
# os.urandom(24)

# import uuid
# uuid.uuid4().hex

app = Flask(__name__)

app.debug = True
# app.config['SECRET_KEY']='Define_The_Key'

HEX_SEC_KEY = "d5fb8c4fa8bd46638dadc4e751e0d68d"

app.config["SECRET_KEY"] = HEX_SEC_KEY
TBAR = DebugToolbarExtension(app)


@app.route("/", methods=["GET"])
def DEB_EX():
    return render_template("index.html")


if __name__ == "__main__":
    app.run()

Lorsque nous exécutons le serveur, nous pouvons voir que la barre d’outils fonctionne correctement et qu’aucune erreur ne s’est produite dans la console.

Générer une clé secrète à l’aide de Flask

Nous avons utilisé ce code dans notre modèle.

<html>
    <head>
        <body>
            <h2>Hi User, the secret key is necessary to run the debug toolbar</h2>
        </body>
    </head>
</html>
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn