Flask Geheimschlüssel
In diesem Artikel geht es um den geheimen Schlüssel in Flask.
- Was ist ein geheimer Schlüssel?
- Warum müssen wir es innerhalb der Sitzung verwenden?
- Wie können wir den geheimen Schlüssel auf unterschiedliche Weise generieren?
- Wie nützlich ist es bei der Arbeit mit der
debug
-Toolbar in Flask?
Generieren Sie den geheimen Schlüssel auf unterschiedliche Weise in Flask und Python
Um auf eine Sitzungs-ID zuzugreifen, müssen Sie einen Verschlüsselungsschlüssel verwenden, der der Variablen SECRET_KEY
zugewiesen ist. Daher ist es zu diesem Zeitpunkt äußerst gefährlich, den Wert der Variablen SECRET_KEY
als Zeichenfolge festzulegen. Dieser Schlüssel muss zufällig generiert werden.
Warum ist das so wichtig? Nun, wenn der Client versucht, Daten innerhalb der Sitzungs-ID zu manipulieren, möchten wir, dass dies vom Server abgelehnt wird.
Wenn der Client den geheimen Schlüssel irgendwie erraten kann, kann er seine Sitzungsdaten generieren, die der Server nicht zurückweist, und Sie können ihn wahrscheinlich erraten; deshalb ist es keine gute Praxis.
Wozu also die Session-ID? Nun, es wird in einem Cookie gespeichert und verwendet, um den Benutzer zu verknüpfen, um Daten auf der Serverseite anzugeben, wie z. B. Informationen über den Benutzer in der Datenbank.
Die Frage lautet dann: Wie generieren wir einen wirklich zufälligen Schlüssel?
Gehen wir und wenden uns dem Fläschchen Dokumente zu; Wenn wir nach unten zu dem Abschnitt scrollen, in dem es heißt, wie man gute Schlüssel generiert, hat Ihr Betriebssystem laut Dokumentation Möglichkeiten, ziemlich zufällige Dinge zu generieren, die auf einem kryptografischen Zufallsgenerator basieren, der verwendet werden kann, um einen solchen Schlüssel zu erhalten.
Während wir den Dokumenten folgen, öffnen wir eine Python-Shell und importieren das Modul os
, verwenden dann die Funktion urandom()
und übergeben 24 innerhalb dieser Funktion, damit Sie eine zufällige Zeichenfolge mit einem Link in der Größe des Attributs generieren können die wir passierten.
import os
os.urandom(24)
Wenn wir Enter drücken oder es drucken, erhalten wir diesen Schlüssel.
b'o\xe8\xc3VS\xf3\xf8\x0c\x80Y\xad\xb6\x86\xb3\x7f\xee\x98l\x80\xe47\xfb]}'
Dieser geheime Schlüssel funktioniert nicht für Ihre Flask-App, daher müssen Sie ihn von Ihrem System generieren. Nachdem Sie einen Schlüssel generiert haben, nehmen Sie diese Zeichenfolge, gehen Sie zurück zur Flask-Anwendung und weisen Sie sie der Variablen SECRET_KEY
zu.
Es gibt mehrere Möglichkeiten, den geheimen Schlüssel zu erhalten, und wir werden uns eine weitere Möglichkeit ansehen, einen hexadezimalen Schlüssel zu generieren. Um diesen Schlüssel zu generieren, müssen wir das Modul uuid
importieren, und von der Funktion uuid4()
verwenden wir die Eigenschaft hex
.
import uuid
uuid.uuid4().hex
Ausgabe:
'd5fb8c4fa8bd46638dadc4e751e0d68d'
In Flask gibt es eine andere Möglichkeit, einen geheimen Schlüssel selbst zu definieren; Um den geheimen Schlüssel zu definieren, können wir den folgenden Code verwenden.
app.config["SECRET_KEY"] = "Define_The_Key"
Beim Arbeiten mit der debug
-Symbolleiste in der Flask-App ist es notwendig, einen geheimen Schlüssel zu definieren, da DebugToolbarExtension
nicht funktioniert, ohne unseren geheimen Schlüssel in der Flask-App zu definieren. Wir können jede Methode verwenden, um einen geheimen Schlüssel zu definieren.
Der vollständige Quellcode des Beispiels.
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()
Wenn wir den Server ausführen, können wir sehen, dass die Symbolleiste ordnungsgemäß funktioniert und in der Konsole kein Fehler aufgetreten ist.
Wir haben diesen Code in unserer Vorlage verwendet.
<html>
<head>
<body>
<h2>Hi User, the secret key is necessary to run the debug toolbar</h2>
</body>
</head>
</html>
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