티스토리 뷰

반응형

 

 

 

가. 원인

  - 프로그램 내부에 비밀번호를 하드코딩한 경우

 

 

나. 영향

  - 하드코드된 비밀번호를 내부인증에 사용하거나, 외부 컴포넌트와 통신에 사용할 경우, 관리자 정보가 노출될 수 있음

  - 하드코드된 비밀번호가 인증실패를 야기할 경우, 원인파악의 어려움 발생

 

 

다. 보안대책

  - 비밀번호는 암호화하여 별도의 파일이나 DB에 안전하게 저장 후 사용

  - 디폴트 암호 대신 "최초 로그인" 모드를 사용하여 사용자가 직접 패스워드를 입력하도록 설계

 

 

라. 안전한 코드

1. DB계정정보 암호화 후 사용

 

  private static final String DB_USER = "db_manager";

  ...

  public Connection getConnection( ) {

     Connection conn = null;

     ...

     // DB 계정 패스워드를 암호화 후 Properties에 저장 후 사용 시 복호화 처리

     String DB_PASS = props.getProperties( "EncryptedPass" );

     byte[] decryptedPass = cipher.doFinal( DB_PASS.getBytes() );

     DB_PASS = new String( decryptedPass );

     ...

     conn = DriverManager.getConnection( this.DB_URL, this.DB_USER, DB_PASS );

     ...

     return conn;

  }

 

 

 

마. 진단방법

<하코코딩된 패스워드 확인>

  1. 로그인 처리 모듈 및 함수에 패스워드가 하드코딩 되어 있는지 확인

  2. 패스워드를 별도의 파일에 사용하고 있는지 확인

 

 

바. 정/오탐 케이스

<정탐 케이스>

  1. 패스워드를 별도의 파일에 저장하지 않고 소스코드에 하드코딩 되어 있을 경우

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