[python] Flask-WTF에서 사용자가 입력한 값을 암호화하여 저장하는 방법은 무엇인가요?
Flask-WTF는 Flask 프레임워크에서 폼을 생성하고 처리하는 데 사용되는 유용한 확장 도구입니다. 사용자가 입력한 값을 암호화하여 저장하려면 다음과 같은 단계를 따를 수 있습니다.
- 필요한 라이브러리 가져오기: Flask-WTF 외에 암호화를 위한 라이브러리가 필요합니다. 예를 들어,
bcrypt
나passlib
와 같은 라이브러리를 사용할 수 있습니다. 이 예시에서는bcrypt
를 사용하도록 하겠습니다.
from flask_bcrypt import Bcrypt
- 암호화 객체 생성하기: Flask-WTF에서 제공하는
FlaskForm
클래스를 상속받은 폼 클래스에서Bcrypt
객체를 생성해야 합니다. 이 객체를 사용하여 암호화와 암호 해독 기능을 처리할 수 있습니다.
bcrypt = Bcrypt()
- 사용자 입력 값을 암호화하기: 사용자 입력을 받은 후에
bcrypt
객체에서 제공하는generate_password_hash()
메서드를 사용하여 입력 값을 암호화합니다. 예를 들어, 폼 클래스에서password
라는 필드를 추가하고 이를 저장할 때 암호화한 비밀번호를 저장해야 합니다.
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
class RegistrationForm(FlaskForm):
# other fields ...
password = PasswordField('Password')
def save(self):
# save code ...
hashed_password = bcrypt.generate_password_hash(self.password.data).decode('utf-8')
# save hashed_password to database ...
- 암호 해독이 필요한 경우: 사용자가 로그인하거나 입력한 암호화된 값을 복호화해야 할 경우,
bcrypt
객체에서 제공하는check_password_hash()
메서드를 사용하여 복호화할 수 있습니다.
hashed_password_from_db = '...' # 암호화된 비밀번호
user_input_password = '...' # 사용자가 입력한 비밀번호
if bcrypt.check_password_hash(hashed_password_from_db, user_input_password):
# 비밀번호가 일치한다면 로그인 성공!
# 로그인 코드 ...
else:
# 비밀번호가 일치하지 않는다면 로그인 실패!
# 에러 처리 코드 ...
이렇듯 Flask-WTF를 사용하여 사용자가 입력한 값을 암호화하여 저장할 수 있습니다. 암호 해독이 필요한 경우에도 마찬가지로 bcrypt
객체를 사용할 수 있습니다. 암호화된 비밀번호를 저장하고 비교하는 방식을 사용하면 보안을 강화할 수 있습니다.
참고:
- Flask-WTF 공식 문서: Flask-WTF
- Flask-Bcrypt 공식 문서: Flask-Bcrypt