250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 엑셀 업로드
- Jenkins
- java
- 그리드
- DevOps
- sqlserver
- 제이쿼리그리드
- 자바8
- jqGrid
- mssql
- poi
- stream api
- docker
- Javascript
- 보안
- 대용량 업로드
- ci/cd
- rabbitmq
- 스트림
- QueryDSL
- apache.poi
- mom
- JQuery
- 자동빌드
- Stream
- 자동배포
- JPA
- ORM
- spring
- MessageQueue
Archives
- Today
- Total
개발 메모장
[JavaScript] 비밀번호 정규식 및 유효성 검사 본문
728x90
#. 강력한 보안을 위해 비밀번호 정규식은 필수적으로 정의가 필요합니다.
#. 비밀번호 정규식
- 영문(대소문자) + 숫자 + 특수문자가 각 1회 이상 입력되어 있고 10자리 이상
const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+~`\-={}[\]:;"'<>,.?/\\]).{10,}$/;
- (?=.*[a-z]) : 소문자가 하나 이상 있는지 확인
- (?=.*[A-Z]) : 대문자가 하나 이상 있는지 확인
- (?=.*\d) : 숫자가 하나 이상 있는지 확인
- (?=.*[!@#$%^&*()_+~`\-={}[\]:;"'<>,.?/\\]) : 특수문자가 하나 이상 있는지 확인
- .{10,} : 입력한 문자가 10회 이상인지 확인 ( 필요에 따라 비밀번호 최소, 최대 길이 수정 / 앞 - 최소길이, 뒤 - 최대길이)
#. 유효성 검사
const password = $('#password').val();
const id = $('#id').val();
const SamePw = 0; // 동일문자 카운트
const SamePwPlus = 0; // 연속성 카운트 +
const SamePwMinus = 0; // 연속성 카운트 -
for(var i = 0; i < password.length; i++) {
var chr_pw = password.charAt(i);
var chr_pw1 = password.charAt(i+1);
var chr_pw2 = password.charAt(i+2);
// 동일문자 카운트
if(chr_pw === chr_pw1) {
SamePw = SamePw + 1
}
// 연속성 카운트 +
if(chr_pw.charCodeAt(0) - chr_pw1.charCodeAt(0) === 1
&& chr_pw1.charCodeAt(0) - chr_pw2.charCodeAt(0) === 1) {
SamePwPlus = SamePwPlus + 1
}
// 연속성 카운트 -
if(chr_pw.charCodeAt(0) - chr_pw1.charCodeAt(0) === -1
&& chr_pw1.charCodeAt(0) - chr_pw2.charCodeAt(0) === -1) {
SamePwMinus = SamePwMinus + 1
}
}
// 연속된 문자열 3자 이상 사용불가(123, 321, abc, cba 등)
if(SamePwPlus > 1 || SamePwMinus > 1 ) {
alert("");
return;
}
// 동일문자 3번 이상 사용불가(111, 222, aaa, bbb 등)
// \\1을 추가할 때마다 1회씩 증가
if(samePw > 1) {
alert("");
return
}
#. 개별 유효성 검사
- 비밀번호에 아이디를 포함 돼있는 경우에 대한 검사
if(password.search(id) > -1) {
alert("아이디를 비밀번호에 포함시키지 마세요!");
return
}
- 비밀번호에 한글을 입력하는 경우에 대한 검사
const hangulCheck = /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/;
if(hangulCheck.test(pw)) {
alert("한글 사용 금지");
return
}
- 비밀번호에 공백이 있는 경우에 대한 검사
if(password.search(/\s/) != -1) {
alert("공백 사용 금지");
return
}
- 비밀번호 길이에 대한 검사
if(password.length < 10) {
alert("비밀번호는 10자리 이상!");
return
}
- 동일 문자 사용에 대한 검사
if(/(\w)\1\1\1/.test(pw)) {
alert('같은 문자를 4번 이상 사용하실 수 없습니다.');
return
}
===========================================================
틀린 내용이 있거나 이견 있으시면 언제든 가감 없이 말씀 부탁드립니다!
===========================================================
728x90
'Java Script' 카테고리의 다른 글
[jQuery] jqGrid 사용방법(정의 및 속성)(1/2) (1) | 2023.12.29 |
---|---|
[React] React 연동(VS Code) 및 Spring Tools Suite 연동 (1) | 2023.12.21 |
[React] Node.js 및 React 설치하기 (0) | 2023.12.20 |
[jQuery] noConflict - 식별자 중복, 이중 jQuery 충돌 방지 (0) | 2023.12.11 |
[Ajax] 발생시킨 예외 처리 문구로 Alert 띄우기 (0) | 2023.11.24 |