반응형
패스워드 생성 시 설정 정규식에 맞춰 검사하는 코드 예시다.
2000년대 초반까지 비밀번호 저장하는 방식은 입력하면 그대로 DB에 반영되었다.
현재는 복잡도와 길이를 검증하여 승인 처리를 해야 한다.
회원가입 코드 예시
from flask import request, redirect
from Models import User
from Models import db
import re
@app.route('/register', methods=['POST'])
def register():
userid = request.form.get('userid')
password = request.form.get('password')
confirm_password = request.form.get('confirm_password')
if password != confirm_password:
return make_response("비밀번호가 일치하지 않습니다.", 200)
if not check_password(password):
return make_response("비밀번호 조합규칙에 맞지 않습니다.", 200)
else:
usertable=User()
usertable.userid = userid
usertable.password = password
db.session.add(usertable)
db.session.commit()
return make_response("회원가입 성공", 200)
def check_password(password):
# 2종 이상 문자로 구성된 8자리 이상 비밀번호 검사 정규식
PT1 = re.compile('^(?=.*[A-Z])(?=.*[a-z])[A-Za-z\d!@#$%^&*]{8,}$')
PT2 = re.compile('^(?=.*[A-Z])(?=.*\d)[A-Za-z\d!@#$%^&*]{8,}$')
PT3 = re.compile('^(?=.*[A-Z])(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{8,}$')
PT4 = re.compile('^(?=.*[a-z])(?=.*\d)[A-Za-z\d!@#$%^&*]{8,}$')
PT5 = re.compile('^(?=.*[a-z])(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{8,}$')
PT6 = re.compile('^(?=.*\d)(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{8,}$')
# 문자 구성 상관없이 10자리 이상 비밀번호 검사 정규식
PT7 = re.compile('^[A-Za-z\d!@#$%^&*]{10,}$')
for pattern in [PT1, PT2, PT3, PT4, PT5, PT6, PT7]:
if pattern.match(password):
return True
return False
함수를 2개를 만들었다. register함수와 check_password함수.
아래 함수는 정규식을 적용하여 비밀번호 체크하는 함수.
위 함수는 정규식을 호출해서 맞으면 DB로 update, 틀리면 등록하지 않도록 하는 함수다.
보통 SQL과 기타 언어에서 사용하는 정규식이므로 확인하여 활용하면 좋을 것 같다.
반응형
'IT' 카테고리의 다른 글
파이썬(python) 트라이익셉트(try - except) 적용 예시 (0) | 2022.10.10 |
---|---|
프린터 출력 오류 원인과 해결 방법 공개 (0) | 2022.09.29 |
보안 패치 끝난 윈도우7을 사용할 때 보안성 확보하는 방법 (0) | 2022.05.13 |
국가, 공공기관 정보화사업 제안요청서 작성 방법(보안항목 개념설명) (0) | 2022.05.03 |
마우스 고장원인, 갑자기 클릭 안될 때 해결방법 (0) | 2022.03.27 |