Programing/PHP

php 비밀번호 유효성 검사

2025. 4. 22. 09:26
반응형

연관글

  • 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와 JavaScript로 구현하는 게시물 등록일 상대 표기  (0) 2025.05.28
PHP 이메일 유효성 검사  (0) 2025.04.22
🔐 PHP로 문자열 중간을 마스킹하는 함수  (2) 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
'Programing/PHP' 카테고리의 다른 글
  • PHP와 JavaScript로 구현하는 게시물 등록일 상대 표기
  • PHP 이메일 유효성 검사
  • 🔐 PHP로 문자열 중간을 마스킹하는 함수
  • PHP SEED ECB 암/복호화 샘플코드
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (478)
      • 금융 (61)
      • Programing (295)
        • Algorithm (39)
        • API (2)
        • javascript (122)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (21)
        • MS-SQL (1)
        • MySQL (13)
        • 보안 (5)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6)
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (36)
        • 회고 (3)
        • 컬럼 (4)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    자바스크립트
    사고 싶은 책
    JavaScript
    자바
    It
    Java
    위시리스트
    자바스크립트유틸
    php
    IT블로그
    블로그
    디자인패턴
    IT·컴퓨터
    IT 관련
    SQL
    js패턴
    iT's MY LiFE
    기초
    jsp
    읽고 싶은 책
Dongkkase
php 비밀번호 유효성 검사
상단으로

티스토리툴바