IT/앱사용방법

시큐어코딩) 파이썬 웹개발 비밀번호(암호) 변경 기능 구현

볼통통알파카 2022. 6. 26. 20:02
반응형
로그인 인증 절차

로그인의 인증절차를 제대로 구현하지 않을 경우 다른 사람이 기능을 이용할 때 정보 탈취가 일어날 수 있다.

로그인을 하더라도 모든 페이지에서 동일한 권한의 서비스를 제공하는 것 대신 데이터를 열람할 때 다른 인증방식으로 다시 인증하는 방법을 적용해 강화하면 데이터 누출에 대한 보안 문제를 일부 해소할 수 있다.

 

파이썬 비밀번호(암호) 변경 기능 구현 중요사항

1. 외부 접근 시 보안검사를 우회하여 서버에 접근하지 못하게 설계

2. 중요한 정보가 있는 페이지는 재 인증 적용

3. 안전하다고 검증된 라이브러리나 프레임 워크를 사용

 

안전한 비밀번호 변경 구현 코드 예시
# login 된 사용자만 접근하도록 처리
@login_required
def change_password(request):
 new_pwd = request.POST.get('new_password','')
 crnt_pwd = request.POST.get('current_password','')

 # 세션에서 로그인한 사용자정보를 가져옴
 user = '%s' % escape(request.session['userid'])
 crnt_h = hashlib.sha256(crnt_pwd.encode())
 h_pwd = crnt_h.hexdigest()
 
 # DB에서 기존 사용자의 Hash값 변환 된 패스워드 가져오기
 old_pwd = get_password_from_db(user)

 # 패스워드를 변경하기 전 사용자에 대해 재인증
 if old_pwd == h_pwd:
    new_h = hashlib.sha256(new_pwd.encode())
    update_password_from_db(user, new_h.hexdigest())
    returnrender(request, '/success.html')

코드 설명

1. 변경할 암호와 현재 암호를 변수에 저장

2. 로그인 한 사용자 정보 가져옴

3. 현재 암호를 암호화하고, DB에 저장된 암호화된 알고리즘과 비교

4. 일치할 경우 변경할 암호를 수정함(업데이트)

반응형