Flask 비밀 키
이 문서는 Flask의 비밀 키에 관한 것입니다.
- 비밀 키는 무엇입니까?
- 세션 내에서 사용해야 하는 이유는 무엇입니까?
- 다른 방법으로 비밀 키를 생성하려면 어떻게 해야 합니까?
- Flask에서
debug
도구 모음으로 작업할 때 어떻게 유용합니까?
Flask와 Python에서 다른 방법을 사용하여 비밀 키 생성
세션 ID에 접근하려면 SECRET_KEY
변수에 할당된 암호화 키를 사용해야 하므로 당시 SECRET_KEY
변수의 값을 문자열로 설정하는 것은 매우 위험합니다. 이 키는 무작위로 생성되어야 합니다.
그게 왜 그렇게 중요한가요? 클라이언트가 세션 ID 내에서 데이터를 조작하려고 하면 서버에서 거부되기를 원합니다.
클라이언트가 비밀 키를 어떻게든 추측할 수 있다면 서버가 거부하지 않을 세션 데이터를 생성할 수 있으며 아마도 추측할 수 있습니다. 이것이 좋은 습관이 아닌 이유입니다.
그렇다면 세션 ID는 무엇을 위한 것입니까? 글쎄, 그것은 쿠키 안에 저장되고 데이터베이스의 사용자에 대한 정보와 같은 서버 측 데이터를 지정하기 위해 사용자를 연결하는 데 사용됩니다.
그러면 질문은 다음과 같습니다. 진정한 무작위 키를 생성하는 방법은 무엇입니까?
Flask 문서로 이동해 보겠습니다. 문서에 따르면 좋은 키를 생성하는 방법이 나와 있는 섹션으로 스크롤하면 운영 체제가 이러한 키를 얻는 데 사용할 수 있는 임의의 암호화 생성기를 기반으로 꽤 임의적인 것을 생성할 수 있는 방법이 있습니다.
문서를 따르는 동안 Python 셸을 열고 os
모듈을 가져온 다음 urandom()
함수를 사용하고 이 함수 내부에 24를 전달하여 전달한 속성 크기의 링크가 포함된 임의의 문자열을 생성할 수 있다.
import os
os.urandom(24)
Enter 키를 누르거나 인쇄하면 이 키를 얻습니다.
b'o\xe8\xc3VS\xf3\xf8\x0c\x80Y\xad\xb6\x86\xb3\x7f\xee\x98l\x80\xe47\xfb]}'
이 비밀 키는 Flask 앱에서 작동하지 않으므로 시스템에서 생성해야 합니다. 키를 생성한 후 해당 문자열을 잡고 Flask 애플리케이션으로 돌아가 SECRET_KEY
변수에 할당합니다.
비밀 키를 얻는 방법에는 여러 가지가 있으며 16진수 키를 생성하는 방법을 한 가지 더 살펴보겠습니다. 이 키를 생성하려면 uuid
모듈을 가져와야 하며 uuid4()
함수에서 hex
속성을 사용합니다.
import uuid
uuid.uuid4().hex
출력:
'd5fb8c4fa8bd46638dadc4e751e0d68d'
Flask에는 비밀 키를 스스로 정의하는 또 다른 방법이 있습니다. 비밀 키를 정의하기 위해 다음 코드를 사용할 수 있습니다.
app.config["SECRET_KEY"] = "Define_The_Key"
Flask 앱에서 debug
도구 모음으로 작업할 때 DebugToolbarExtension
은 Flask 앱에서 비밀 키를 정의하지 않으면 작동하지 않기 때문에 비밀 키를 정의해야 합니다. 모든 방법을 사용하여 비밀 키를 정의할 수 있습니다.
예제의 전체 소스 코드입니다.
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()
서버를 실행하면 도구 모음이 제대로 작동하고 콘솔에 오류가 발생하지 않은 것을 볼 수 있습니다.
템플릿에서 이 코드를 사용했습니다.
<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