每次資通安全稽核都會有新花招
這次要求實作密碼不得與前3次(以上)密碼相同+不得與帳號相同
不得使用鍵盤『連續字元』也不得使用『連續重複字元』組成
天阿!真是個囉唆的情境 XD
終於寫出解法了,整理成兩個 function 趕快紀錄一下,以免下次用到時還要重寫:
判斷是否連續字元
// 判斷是否連續字元
function check_successive_str($str) {
$match = '(123|234|345|456|567|678|789|abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz)';
preg_match_all('/'.$match.'/', $str, $res);
if (!empty($res[0])) {
return true;
}
return false;
}
判斷是否連續重複字元
// 判斷是否連續重複字元 => 4位
function check_repeat_str($str) {
// {3,} 改成 {2,} => 改為3位
if (preg_match("/([\x80-\xff].|.)\\1{3,}/",$str)) {
return true;
}
//utf-8
if(preg_match("/([\x{4e00}-\x{9fa5}])\\1{3,}/u", $str, $out)) {
// var_dump($out);
// return '有連續重複4個字串 => '.$out[1];
return true;
}
return false;
}