반응형
과거에는 비밀번호를 입력하면 그대로 값을 DB에 반영했었는데 현재는 복잡도와 길이를 검증하여 승인 처리를 해야 한다.
패턴은 아래와 같다.
2가지 이상(문자, 숫자, 특수문자) 8자리 이상 검사
PT1 = ('^(?=.*[A-Z])(?=.*[a-z])[A-Za-z\d!@#$%^&*]{8,}$')
PT2 = ('^(?=.*[A-Z])(?=.*\d)[A-Za-z\d!@#$%^&*]{8,}$')
PT3 = ('^(?=.*[A-Z])(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{8,}$')
PT4 = ('^(?=.*[a-z])(?=.*\d)[A-Za-z\d!@#$%^&*]{8,}$')
PT5 = ('^(?=.*[a-z])(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{8,}$')
PT6 = ('^(?=.*\d)(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{8,}$')
문자구성 상관없이 10자리 이상 검사
PT10 = ('^[A-Za-z\d!@#$%^&*]{10,}$')
파이썬 회원가입 비밀번호 검증 예시
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):
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,}$')
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
반응형
'IT > 앱사용방법' 카테고리의 다른 글
[공공기관] 엣지(edge) 창 갑자기 꺼질 때 방법 - 팝업 설정 (2) | 2022.07.15 |
---|---|
윈도우 11 엣지 새 탭 클릭하면 원하는 페이지로 바로 뜨게 하는 방법 (0) | 2022.07.08 |
티스토리 구글 애드센스 본인 확인 하는 방법 (0) | 2022.06.29 |
시큐어코딩) 파이썬 중요 자원에 대한 권한 설정 (0) | 2022.06.27 |
시큐어코딩) 파이썬 웹개발 비밀번호(암호) 변경 기능 구현 (0) | 2022.06.26 |