반응형
< 회원 관리 API를 위한 pbkdf2_sha256으로 비밀번호 암호화시키기 >
# 회원 관리 API에서 비밀번호를 안전하게 관리하기 위한 pbkdf2_sha256 해시 알고리즘을 사용
- pbkdf2_sha256는 안전한 해시 함수로, 암호화된 비밀번호를 저장하고 검증하는 데 사용된다.
# 암호화를 사용하기 위해 인스톨을 먼저 진행
pip install psycopg2-binary
pip install passlib
# 비밀번호 관리를 용이하게 하기 위해 utils.py라는 파일을 새로 생성하여 코드 작성!
# 라이브러리를 모두 설치하였으므로 이제 import
# 해쉬 알고리즘 (단방향 암호화)
from config import Config
from passlib.hash import pbkdf2_sha256
# 원문 비밀번호를, 단방향으로 암호화 하는 함수
# 랜덤이더라도 시드값을 알면 패턴이 똑같음 그러므로 각 회사마다 고유한 문자열을 암호화에 추가해 준다. (이 고유값은 절대 유출되면 안됨)
# 그래서 이 고유값은 config.py 에서 따로 변수로 지정하여 관리한다 SALT
def hash_password(original_password) :
original_password = original_password + Config.SALT
password = pbkdf2_sha256.hash(original_password)
return password
# 유저가 로그인할때, 입력한 비밀번호가 맞는지 체크하는 함수.
def check_password(original_password, hashed_password) :
original_password = original_password + Config.SALT
return pbkdf2_sha256.verify(original_password, hashed_password)
# 이제 생성한 함수를 테스트
hashed_password = hash_password('1234')
print(hashed_password)
# 암호화된 비밀번호를 파라미터 안에 작성하여 check
check = check_password('1234','$pbkdf2-sha256$29000$0Pp/T4nRGgOAsLa21lor5Q$LevPxDCYb7bddkgCgf8zGbJzYCMJO3IVrI5trLIlAtg')
print (check)
# 동일한 패턴으로 암호화가 될수있어 시드값을 지정하여 SALT 변수로 암호화 하여 활용
- 보안 관리용 파일인 config.py에 작성하여 관리 SALT
class Config :
# 대문자로 적는 이유는 바뀌지 않는 상수를 뜻하기 위해
# 앞으로는 접속 ID / PW 는 config로 관리 이 파일은 GIT hub에 올리면 안됨
HOST = 'yh-db.cp46dfdfk4u1po.ap-northeast-2.rds.amazonaws.com'
DATABASE = 'recipe_db'
DB_USER = 'recipe_db_user'
DB_PASSWORD = '45440'
# 실무에서 이 키값은 절대 노출되면 안됨
# 실습에선 임의로 막 작성하여도 되지만 실무에선 지정된 키값이 있을것
SALT = 'sad;klfjsdlkf12&#$&#fj'
다음 게시글로 계속~!
728x90
반응형
'API 개발 > Restful API' 카테고리의 다른 글
Restful API : Flask 에서 JWT 사용하는 방법 (설치방법 및 flask에서 설정방법) (0) | 2024.05.24 |
---|---|
Restful API : 회원 관리 API를 위한 email 체크 라이브러리 적용 (email-validator) (0) | 2024.05.24 |
Restful API : Python MySQL Connector 딜리트 하는 방법과 코드 (0) | 2024.05.24 |
Restful API : Python MySQL Connector 업데이트 하는 방법과 코드 (0) | 2024.05.24 |
TypeError : Object of type ... is not JSON serializable 에러가 발생한 이유와 해결방법 (0) | 2024.05.24 |