>  기사  >  웹 프론트엔드  >  자바스크립트 비밀번호 강도 검증 규칙, 채점 및 검증(프론트엔드 코드가 제공되며 백엔드 코드는 강도 규칙에 따라 번역 가능)_javascript 기술

자바스크립트 비밀번호 강도 검증 규칙, 채점 및 검증(프론트엔드 코드가 제공되며 백엔드 코드는 강도 규칙에 따라 번역 가능)_javascript 기술

WBOY
WBOY원래의
2016-05-16 18:27:011083검색

서문:

비밀번호 강도는 매우 일반적인 기능이며 상대적으로 간단합니다. 가장 중요한 것은 이 강도 규칙을 공식화하는 방법입니다. 이제 비밀번호 강도 확인을 업그레이드해야 합니다. 이전 확인은 비교적 간단했지만 이제는 더 이상 요구 사항을 충족할 수 없습니다. 이제 유연하게 변경할 수 있고 여러 수준의 구성 가능한 옵션이 있는 비밀번호 강도 확인이 필요합니다. 다음 내용. 설계하기 전에 유사한 보다 성숙한 강도 규칙도 참조했지만 모두 암호 강도 규칙을 제어하는 ​​점수 매기기 메커니즘을 채택하여 구성 가능성이 높고 유연합니다. 원래는 직접 사용하고 싶었지만 상대적으로 오래되었고 일부는 회사의 개발 요구에 적합하지 않다는 것을 알았습니다. 아마도 이 작업은 상대적으로 단순해서 아무도 업데이트하거나 새로운 코드를 작성하지 않았기 때문에 규칙과 코드를 디자인했습니다. 나 자신이 코드를 작성했습니다.

구현:

원리:
채점 메커니즘을 사용하여 채점은 3가지 범주(기본 점수, 가산점, 감점)로 나누어지며, 기본 점수가 먼저 계산됩니다. 보너스 포인트는 계산된 부분이며, 마지막으로 차감할 포인트를 차감하여 최종 총점을 얻습니다.

규칙:
비밀번호 입력 유형(문자, 대문자, 소문자, 특수 문자).
기본 포인트는 다음과 같습니다. 비밀번호 길이는 각 길이가 1포인트이며, 18자를 초과하는 길이는 18포인트입니다. 비밀번호에 입력 유형이 포함된 경우 기본 포인트가 4포인트 증가합니다.
보너스 포인트: 비밀번호 입력 유형의 총 개수가 2 이상이면 2 포인트가 추가됩니다. 총 5 이상이면 4 포인트가 추가됩니다.
동일한 유형의 문자가 연속으로 반복될 경우 1회당 1점이 감점됩니다.
총점은 50점입니다.
0~10점: 부적격(약함)
11~20점: 보통
21~30점: 보통
31~40점: 강함
41~50점: 안전
*점수 범위는 자유롭게 조정 및 일치시킬 수 있습니다. 실제로 전체 채점 규칙은 필요에 따라 수정될 수 있습니다.

코드:

코드 복사 코드는 다음과 같습니다.

function 비밀번호Grade(pwd) {
var Score = 0
var regexArr = ['[0-9] ', '[a-z]' , '[A-Z]', '[\W_]'];
varpeatCount = 0
var prevChar = ''
//길이 확인
var len = pwd.length;
score = len > 18 ? 18 : len
//(var i = 0, num = regexArr.length; i < num; i ) { if (eval('/ ' regexArr[i] '/').test(pwd)) 점수 = 4; }
//보너스 포인트
for (var i = 0, num = regexArr.length; i < num i ) {
if (pwd.match(eval('/' regexArr[i] '/g')) && pwd.match(eval('/' regexArr[i] '/g' )).length >= 2) 점수 = 2;
if (pwd.match(eval('/' regexArr[i] '/g')) && pwd.match(eval('/' regexArr[i ] '/g')) .length >= 5) 점수 = 2;
}
//deduction
for (var i = 0, num = pwd.length; i < num; i ) {
if ( pwd.charAt(i) == prevChar) RepeatCount ;
else prevChar = pwd.charAt(i)
}
score -=peatCount * 1; 점수
}


점수 예:
1111=7점
1@dA=20점
111111=9점
abcdef1=19점
abcd12=18포인트
abc123=18포인트
ab123A=22포인트
aA12j@=26포인트
aasdfkjjsjjj=16포인트
111111111dsfskjjkjeh=25포인트
1111dsfskjjkjeh =25포인트
123 1kb#4ktSF!T@ s^j#hkWH=50포인트
skhk3293ks=24포인트
sfh#4hHdk=29포인트
bure12#sk=27포인트
a@s@dk23= 26점
bruceLi@09kt =34점
ce@Li1=24점
END
모두가 이 채점 규칙에 대해 토론할 수 있습니다. 또한 자신이 가지고 있는 규칙과 코드를 직접 제공할 수도 있습니다. 모든 사람의 연구와 의사소통을 용이하게 하기 위해서는 코드를 지속적으로 유지 관리하고 업데이트해야 하며, 그래야 우리가 전임자의 스크립트를 기반으로 계속해서 발전할 수 있습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.