반응형
로그인 화면을 만들 때 파이썬으로 구성할 경우 DB로 제한 거는 방법을 소개하려고 한다.
로그인 횟수 제한 거는 이유
로그인 시도할 때 횟수 제한을 걸지 않으면 무차별 대입(brute forece) 공격에 취약해진다.
여기에 대비하기 위해 로그인 인증 횟수를 설정해 계정을 잠그거나 추가 인증 방식을 적용하는 등 2차 인증을 설정하는 방법을 추천한다.
로그인 횟수 제한 코드 예시
import hashlib
from django.shortcuts import render
LOGIN_TRY_LIMIT = 5
def login(request):
user_id = request.POST.get('user_id', '')
user_pw = request.POST.get('user_pw', '')
# 로그인 실패기록 가져오기
login_fail = models.LoginFail.objects.filter(user_id)
# 로그인 실패횟수 초과로 인해 잠금된 계정에 대한 인증 시도 제한
if login_fail.count() >= LOGIN_TRY_LIMIT:
return render(request, '/account_lock.html', {'state':'account_lock'})
else:
sha = hashlib.sha256()
sha.update(user_pw)
hashed_passwd = get_user_pw(user_id)
if sha.hexdigest() == hashed_passwd:
models.LoginFail.objects.filter(user_id).delete()
return render(request, '/index.html', {'state':'login_success'})
else:
# DB에 로그인 실패횟수 기록
models.LoginFail.objects.create(user_id)
return render(request, '/login.html', {'state':'login_failed'})
코드 설명
로그인 시도 제한을 변수로 설정하고 로그인 실패 횟수를 변수로 저장하여 제한 설정 이상을 시도했을 경우 계정을 잠그는 형식이다.
DB에는 로그인 실패 횟수를 기록하여 무차별 공격 등 이상 징후를 식별할 수 있게 설정하였다.
로그인 횟수 제한 걸기 정리
1. 로그인할 때 실패 기록을 저장한다.
2. 로그인 횟수가 지정한 횟수를 넘기면 잠금 혹은 2중 인증단계로 넘어간다.
3. 잠금 된 아이디는 재인증 절차를 걸쳐 회복하거나 관리자 문의로 안내한다.
반응형
'IT > 앱사용방법' 카테고리의 다른 글
인터넷 창 복구하는 방법 - 크롬 창 껐을 때 페이지 그대로 뜨게 하는 방법 (0) | 2022.08.25 |
---|---|
한글문서 보안저장 방법(PDF저장 아님) (0) | 2022.08.20 |
파이썬 코딩 - 쿠키값 관리 (0) | 2022.08.06 |
[공공기관] 엣지(edge) 창 갑자기 꺼질 때 방법 - 팝업 설정 (2) | 2022.07.15 |
윈도우 11 엣지 새 탭 클릭하면 원하는 페이지로 바로 뜨게 하는 방법 (0) | 2022.07.08 |