본문 바로가기

해킹-보안

자바스크립트 정규식 비밀번호 유효성 검사

반응형

주요정보통신기반시설 기술적 취약점 분석 평가 기준
약한 문자열 강도
회원 가입 시 안전한 패스워드 규칙이 적용되지 않아 취약한 패스워드로 회원 가입 가능한 경우
공격자가 추측을 통한 대입 공격을 시도하여 사용자의 패스워드를 추출할 수 있다.

➽ 규정 예시
최소 10자리 이상의 비밀번호 구성
3종류 이상(대소문자, 숫자, 특수문자)을 조합하여 최소 8자리 이상의 비밀번호 구성
연속적인 숫자나 전화번호 등 추측하기 쉬운 개인정보 및 아이디와 비슷한 비밀번호는 사용 자제
비밀번호는 유효기간을 설정하여 반기별 1회 이상 변경


최소 10자리 이상의 비밀번호 구성
 "^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{10,}$"
 대소문자, 숫자, 특수문자 세가지 조합 이상 8자 이상의 비밀번호 구성
 "^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$"


예시 2,3번 적용된 자바스크립트 

 function check_passwd()  {
 			var check1 = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,12}$/.test(mbrPwd);  
 			if(!check1){
 				return "비밀번호는 영문,숫자,특수문자(!@$%^&* 만 허용)를\n조합하여 8~12자로 구성하세요.";				
 			}
 
 			if(/(\w)\1\1/.test(mbrPwd)){
 				return '같은 문자를 3번 이상 사용하실 수 없습니다.';
 			}				
 			
 			var cnt = 0;
 			var cnt2 = 0;
 			var tmp = "";
 			var tmp2 = "";
 			var tmp3 = "";
 			for (var i = 0; i < mbrPwd.length; i++) {
 				tmp = mbrPwd.charAt(i);
 				tmp2 = mbrPwd.charAt(i + 1);
 				tmp3 = mbrPwd.charAt(i + 2);
 
 				if (tmp.charCodeAt(0) - tmp2.charCodeAt(0) == 1
 						&& tmp2.charCodeAt(0) - tmp3.charCodeAt(0) == 1) {
 					cnt = cnt + 1;
 				}
 				if (tmp.charCodeAt(0) - tmp2.charCodeAt(0) == -1
 						&& tmp2.charCodeAt(0) - tmp3.charCodeAt(0) == -1) {
 					cnt2 = cnt2 + 1;
 				}
 			}
 			if (cnt > 0 || cnt2 > 0) {
 				return '연속된 문자를 3번 이상 사용하실 수 없습니다.';
 			} 
 			
 			return 'O';
 }


반응형