ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Secure Coding - 패스워드 정책
    Java/Spring 2018. 9. 7. 15:10
    반응형

    패스워드 정책


    - 3가지 종류 이상의 문자 구성으로 8자리 이상의 길이로 구성된 패스워드


    - 2가지 종류 이상의 문자 구성으로 1자리 이상의 길이로 구성된 패스워드


    (문자 종류는 알파벳 대문자, 소문자, 특수문자, 숫자)


    - 널리 알려진 단어를 포함하지 않기


    - 사용자의 ID와 연관성이 있는 단어를 포함하지 않는 패스워드


    - 개인정보는 가족이름, 생일, 주소 , 전화번호 등이 포함되지 않게 해야한다.


    개인정보 이용 법으로 재정되있다. 


    - 기업에서는 패스워드 정책을 내놨기때문에 사용자 입장에서 조건을 안맞추면 손해배상 명분이 힘들수도 있다. ( 3개월마다 비밀번호 변경 등 )



    대응기법

    모든 계정에 대해 공격자가 쉽게 추측할 수 없는 패스워드가 설정되도록 제약을 주어야 한다.

    아래는 일반적으로 권고되는 패스워드 정책

    대/소문자, 숫자, 특수문자를 혼용하여 8글자 이상 패스워드를 사용하도록 한다.

    동일문자를 연속 4회 이상 사용하지 못하도록 한다.

    패스워드 히스토리를 관리해 2~3개 이상 동일 패스워드를 사용하지 못하도록 한다.

    패스워드 변경 주기를 설정한다. (패스워드 유효기간을 90일 이하로 설정)

    연속적인 숫자/문자의 조합 및 생일, 전화번호 등 추측하기 쉬운 패스워드 사용을 금지한다.

    사전에 나오는 쉬운 단어나 이름은 패스워드로 사용하지 못하도록 한다.

    기본 설정된 패스워드는 사용하지 못하도록 설정한다.

    초기 부여된 패스워드는 사용자 최초 접속시 변경하도록 한다.



    정규표현식을 이용해서 정해진 패턴으로 비밀번호를 체크한다.


    /*

     * 패스워드 정책은 알파벳, 숫자, 특수문자를 조합하여 8글자 이상으로 설정한다.

     * (?=.*[a-zA-Z])       하나 이상의 알파벳을 포함한다.

     * (?=.*[0-9@#$%])   하나 이상의 숫자나 특수문자를 포함한다.

     * {8,}                     최소 8글자 이상이어야 한다.

     */

    public boolean verify(String password) {


        String passwordPolicy = “((?=.*[a-zA-Z])(?=.*[0-9@#$%]).{8,})”;


        Pattern pattern = Pattern.compile(passwordPolicy);

        Matcher matcher = pattern.matcher(password); // 패턴이 맞는지

        return matcher.matched(); // 맞으면 true

    }



    스크립트에서 체크해주는것도 중요하다.

    반응형

    'Java > Spring' 카테고리의 다른 글

    Secure - XSS  (0) 2018.09.10
    @Qualifier("")  (0) 2018.09.08
    Secure Coding - Command Injection  (0) 2018.09.07
    Secure Coding - SQL injection  (0) 2018.09.07
    Secure Coding - Paros  (0) 2018.09.07

    댓글

Designed by Tistory.