added blockInsecureCommonPasswords config flag
This commit is contained in:
parent
3e6481c7d9
commit
e63f127a56
@ -72,10 +72,11 @@ export interface DefaultOptions {
|
|||||||
allowNewRegistration: boolean;
|
allowNewRegistration: boolean;
|
||||||
allowMultipleAccounts: boolean;
|
allowMultipleAccounts: boolean;
|
||||||
password: {
|
password: {
|
||||||
pwMinLength: number;
|
minLength: number;
|
||||||
pwMinNumbers: number;
|
minNumbers: number;
|
||||||
pwMinUpperCase: number;
|
minUpperCase: number;
|
||||||
pwMinSymbols: number;
|
minSymbols: number;
|
||||||
|
blockInsecureCommonPasswords: boolean; // TODO: efficiently save password blocklist in database
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -141,10 +142,11 @@ export const DefaultOptions: DefaultOptions = {
|
|||||||
allowNewRegistration: true,
|
allowNewRegistration: true,
|
||||||
allowMultipleAccounts: true,
|
allowMultipleAccounts: true,
|
||||||
password: {
|
password: {
|
||||||
pwMinLength: 8,
|
minLength: 8,
|
||||||
pwMinNumbers: 2,
|
minNumbers: 2,
|
||||||
pwMinUpperCase: 2,
|
minUpperCase: 2,
|
||||||
pwMinSymbols: 0,
|
minSymbols: 0,
|
||||||
|
blockInsecureCommonPasswords: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -5,6 +5,7 @@ const reNUMBER = /[0-9]/g;
|
|||||||
const reUPPERCASELETTER = /[A-Z]/g;
|
const reUPPERCASELETTER = /[A-Z]/g;
|
||||||
const reSYMBOLS = /[A-Z,a-z,0-9]/g;
|
const reSYMBOLS = /[A-Z,a-z,0-9]/g;
|
||||||
|
|
||||||
|
const blocklist: string[] = []; // TODO: update ones passwordblocklist is stored in db
|
||||||
/*
|
/*
|
||||||
* https://en.wikipedia.org/wiki/Password_policy
|
* https://en.wikipedia.org/wiki/Password_policy
|
||||||
* password must meet following criteria, to be perfect:
|
* password must meet following criteria, to be perfect:
|
||||||
@ -16,26 +17,32 @@ const reSYMBOLS = /[A-Z,a-z,0-9]/g;
|
|||||||
* Returns: 0 > pw > 1
|
* Returns: 0 > pw > 1
|
||||||
*/
|
*/
|
||||||
export function check(password: string): number {
|
export function check(password: string): number {
|
||||||
const { pwMinLength, pwMinNumbers, pwMinUpperCase, pwMinSymbols } = Config.get().register.password;
|
const {
|
||||||
|
minLength,
|
||||||
|
minNumbers,
|
||||||
|
minUpperCase,
|
||||||
|
minSymbols,
|
||||||
|
blockInsecureCommonPasswords,
|
||||||
|
} = Config.get().register.password;
|
||||||
var strength = 0;
|
var strength = 0;
|
||||||
|
|
||||||
// checks for total password len
|
// checks for total password len
|
||||||
if (password.length >= pwMinLength - 1) {
|
if (password.length >= minLength - 1) {
|
||||||
strength += 0.25;
|
strength += 0.25;
|
||||||
}
|
}
|
||||||
|
|
||||||
// checks for amount of Numbers
|
// checks for amount of Numbers
|
||||||
if (password.count(reNUMBER) >= pwMinNumbers - 1) {
|
if (password.count(reNUMBER) >= minNumbers - 1) {
|
||||||
strength += 0.25;
|
strength += 0.25;
|
||||||
}
|
}
|
||||||
|
|
||||||
// checks for amount of Uppercase Letters
|
// checks for amount of Uppercase Letters
|
||||||
if (password.count(reUPPERCASELETTER) >= pwMinUpperCase - 1) {
|
if (password.count(reUPPERCASELETTER) >= minUpperCase - 1) {
|
||||||
strength += 0.25;
|
strength += 0.25;
|
||||||
}
|
}
|
||||||
|
|
||||||
// checks for amount of symbols
|
// checks for amount of symbols
|
||||||
if (password.replace(reSYMBOLS, "").length >= pwMinSymbols - 1) {
|
if (password.replace(reSYMBOLS, "").length >= minSymbols - 1) {
|
||||||
strength += 0.25;
|
strength += 0.25;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,5 +51,10 @@ export function check(password: string): number {
|
|||||||
strength = 0;
|
strength = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (blockInsecureCommonPasswords) {
|
||||||
|
if (blocklist.includes(password)) {
|
||||||
|
strength = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
return strength;
|
return strength;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user