내가 이용한 함수 -> generate_password_hash(password, method="pbkdf2:sha256", salt_length=8)
여기서 password
는 요청 받는 폼에서 입력값을 받고, pbkdf2:sha256
을 사용하여 비밀번호를 해시, salt_length
는 8을 추가하여 비밀번호를 암호화 한다.
그러면 다음과 같이 DB에는 암호화된 비밀번호로 저장된다.
@app.route('/register', methods=['GET', 'POST'])
def register():
'''비밀번호 해싱 진행 부분 '''
hash_and_salted_password = generate_password_hash(
request.form.get('password'),
method="pbkdf2:sha256",
salt_length=8
)
user = User()
user.name = request.form.get('name')
user.email = request.form.get('email')
user.password = hash_and_salted_password
# user.password = request.form.get('password')
if request.form:
db.session.add(user)
db.session.commit()
'''
51 Line Info
code=302 Default , code=307 값을 줘야 name 값을 가져 오는 이유는?
302는 기존 Method 와 Body 를 버리고 GET 방식으로 요청하는 반면,
307 은 받은 요청 Method 와 Body 를 유지한채로 재 요청 하기 때문에,
담겨 있던 name 이 정상적으로 secrets 페이지에 정상 적으로 출력.
'''
return redirect(url_for("secrets"), TEMPORARY_REDIRECT)
return render_template("register.html")
참고 사이트
https://werkzeug.palletsprojects.com/en/1.0.x/utils/#module-werkzeug.security 다음 링크의 문서를 참고하여 비밀번호 해싱 및 솔트를 하였습니다.