[python] Flask-WTF에서 사용자가 입력한 값을 암호화하여 저장하는 방법은 무엇인가요?

Flask-WTF는 Flask 프레임워크에서 폼을 생성하고 처리하는 데 사용되는 유용한 확장 도구입니다. 사용자가 입력한 값을 암호화하여 저장하려면 다음과 같은 단계를 따를 수 있습니다.

  1. 필요한 라이브러리 가져오기: Flask-WTF 외에 암호화를 위한 라이브러리가 필요합니다. 예를 들어, bcryptpasslib와 같은 라이브러리를 사용할 수 있습니다. 이 예시에서는 bcrypt를 사용하도록 하겠습니다.
from flask_bcrypt import Bcrypt
  1. 암호화 객체 생성하기: Flask-WTF에서 제공하는 FlaskForm 클래스를 상속받은 폼 클래스에서 Bcrypt 객체를 생성해야 합니다. 이 객체를 사용하여 암호화와 암호 해독 기능을 처리할 수 있습니다.
bcrypt = Bcrypt()
  1. 사용자 입력 값을 암호화하기: 사용자 입력을 받은 후에 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 ...
  1. 암호 해독이 필요한 경우: 사용자가 로그인하거나 입력한 암호화된 값을 복호화해야 할 경우, 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 객체를 사용할 수 있습니다. 암호화된 비밀번호를 저장하고 비교하는 방식을 사용하면 보안을 강화할 수 있습니다.

참고: