반응형
연관글
- 2025.04.22 - [Programing/javascript] - javascript 비밀번호 유효성 검사
- 2019.01.05 - [Programing/PHP] - PHP 정규식 비밀번호 유효성 검사 에서 개선되었습니다.
보안이 중요한 웹 애플리케이션에서는 사용자의 비밀번호가 일정 수준의 복잡성을 만족해야 합니다. 이 글에서는 PHP로 작성된 passwordCheck 함수를 통해 비밀번호의 길이, 문자 구성, 공백 여부 등을 검사하는 방법을 소개합니다.
✨ 함수 설명
function passwordCheck($password)
{
$lengthValid = strlen($password) >= 10 && strlen($password) <= 30;
$hasNumber = preg_match('/[0-9]/', $password);
$hasLetter = preg_match('/[a-zA-Z]/', $password);
$hasSpecial = preg_match('/[!@#$%^&*()\-_=+\\|[\]{};:\'",.<>\/?`~]/', $password);
$hasWhitespace = preg_match('/\s/', $password);
if (!$lengthValid) {
return [
"state" => false,
"msg" => "비밀번호는 영문, 숫자, 특수문자를 혼합하여 최소 10자리 ~ 최대 30자리 이내로 입력해주세요.",
];
}
if ($hasWhitespace) {
return [
"state" => false,
"msg" => "비밀번호는 공백 없이 입력해주세요.",
];
}
if (!$hasNumber || !$hasLetter || !$hasSpecial) {
return [
"state" => false,
"msg" => "영문, 숫자, 특수문자를 혼합하여 입력해주세요.",
];
}
return [
"state" => true,
"msg" => "",
];
}
✨ 검사 기준 요약
- 길이: 최소 10자 이상, 최대 30자 이하
- 문자 구성:
- 숫자 (0-9) 포함
- 영문 대소문자 포함
- 특수문자 포함 (!@#$%... 등)
- 금지 조건: 공백(스페이스, 탭 등) 포함 시 실패
✨ 사용 예시
passwordCheck('abc123456!');
// 결과: ["state" => true, "msg" => ""]
passwordCheck('abcde');
// 결과: ["state" => false, "msg" => "비밀번호는 영문, 숫자, 특수문자를 혼합하여 최소 10자리 ~ 최대 30자리 이내로 입력해주세요."]
passwordCheck('abcdefghij');
// 결과: ["state" => false, "msg" => "영문, 숫자, 특수문자를 혼합하여 입력해주세요."]
passwordCheck('abc 123456!');
// 결과: ["state" => false, "msg" => "비밀번호는 공백 없이 입력해주세요."]
✨ 활용 팁
- 회원가입 및 비밀번호 변경 화면에서 즉시 피드백을 제공하여 사용자 편의성 향상 가능
- 동일한 규칙을 프론트엔드와 백엔드 모두 적용하면 검증의 일관성 유지 가능
- 서비스 성격에 따라 특수문자의 허용 범위를 조정하거나 제한할 수 있음
✨ 결론
passwordCheck 함수는 PHP 환경에서 사용자 비밀번호의 복잡도와 안전성을 효율적으로 검증할 수 있는 실용적인 도구입니다. 간단한 로직을 통해 강력한 보안 요건을 충족할 수 있으며, 다양한 환경에 맞게 유연하게 확장할 수 있습니다.
반응형
'Programing > PHP' 카테고리의 다른 글
PHP 이메일 유효성 검사 (0) | 2025.04.22 |
---|---|
🔐 PHP로 문자열 중간을 마스킹하는 함수 (1) | 2025.04.18 |
PHP SEED ECB 암/복호화 샘플코드 (0) | 2023.05.15 |
PHP 윤년(leap year)체크 (0) | 2019.06.26 |
PHP 배열 첫번째 키값 가지고 오기 (0) | 2019.01.07 |
PHP 정규식 비밀번호 유효성 검사 (0) | 2019.01.05 |
PHP 정규식 이메일 유효성 검사 (0) | 2019.01.05 |
숫자를 휴대폰번호 형태로 전환 (phone number format (0) | 2016.06.23 |