티스토리 뷰

반응형

 

 

 

가. 원인

  - 일정시간 내 여러번의 인증실패 시 계정잠금 또는 추가인증이 충분하지 않을 경우

 

 

나. 영향

  - 무차별 대입 인증시도 등을 통해 로그인 및 권한획득

 

 

다. 보안대책

  - 인증로직 구현 시 인증시도 횟수를 제한

  - 인증실패 초과 시 계정잠금 또는 추가 인증과정을 수행

 

 

라. 안전한 코드

1. 인증시도 횟수제한

 

  ...

  String loginID = request.getParameter( "id" );

  String loginPW = request.getParameter( "pass" );

  ...

  // 인증 처리 전 현재 실패횟수를 체크

  // 5회 이상 실패 시 계정잠금

  int loginFailCnt = dbms.getLoginFailCnt( loginID );

  if ( loginFailCnt >= 5 ) {

     showAlert( "Not Allow Login" );

     break;

  }

 

  boolean bLoginResult = dbms.requestLogin( loginID, loginPW );

  if ( !bLoginResult ) {

     // 인증실패 시 실패횟수를 증가

     loginFailCnt++;

     dbms.updateLoginFailCnt( loginFailCnt );

     showAlert( "Fail Login" );

     break;

  } else {

     // 인증성공 시 실패횟수를 0으로 초기화

    dbms.updateLoginFailCnt( 0 );

    ...

  }

  ...

 

 

 

마. 진단방법

<인증시도 제한 확인>

  1. 인증을 위한 함수정보 확인

  2. 해당 함수의 호출을 제한하는 코드를 확인

 

 

바. 정/오탐 케이스

<정탐 케이스>

  1. 인증시도 제한없이 반복문안에서 계속 인증시도를 수행하고 있을 경우

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday