> 데이터 베이스 > MySQL 튜토리얼 > 디컴파일로부터 Java 코드의 MySQL 자격 증명을 보호하는 방법은 무엇입니까?

디컴파일로부터 Java 코드의 MySQL 자격 증명을 보호하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-17 19:51:12
원래의
143명이 탐색했습니다.

How to Secure MySQL Credentials in Java Code Against Decompilation?

MySQL 사용자 이름과 비밀번호를 디컴파일로부터 보호하는 방법

문제:

Java .class 파일을 쉽게 디컴파일할 수 있습니다. 코드 내에서 로그인 자격 증명을 활용해야 하는 경우 데이터베이스를 어떻게 보호할 수 있습니까?

답변:

코드에 비밀번호를 하드 코딩하지 마세요. 이 내용은 최근 "가장 위험한 프로그래밍 실수 상위 25개"에서 강조되었습니다.

"비밀 계정과 암호를 소프트웨어에 하드 코딩하는 것은 숙련된 리버스 엔지니어에게 매우 편리합니다. 암호가 소프트웨어 전체에서 일관적인 경우 , 해당 비밀번호가 필연적으로 알려지면 모든 고객이 취약해집니다. 또한 하드 코딩되어 있으므로 해결하기가 상당히 불편합니다."

다음을 포함한 구성 정보입니다. 비밀번호는 애플리케이션이 초기화 시 읽는 별도의 파일에 저장되어야 합니다. 이것이 디컴파일로 인해 비밀번호가 유출되는 것을 방지할 수 있는 유일하고 진정한 방법입니다(처음부터 바이너리로 컴파일하지 마세요).

해결책:

Java의 경우 , 간단한 해결책은 사용자 이름 및 사용자 이름을 포함한 다양한 프로그램 설정을 저장하도록 설계된 Preferences 클래스를 사용하는 것입니다.

import java.util.prefs.Preferences;

public class DemoApplication {
  Preferences preferences = Preferences.userNodeForPackage(DemoApplication.class);

  public void setCredentials(String username, String password) {
    preferences.put("db_username", username);
    preferences.put("db_password", password);
  }

  public String getUsername() {
    return preferences.get("db_username", null);
  }

  public String getPassword() {
    return preferences.get("db_password", null);
  }

  // your code here
}
로그인 후 복사

이 코드에서 setCredentials 메소드는 입력 대화 상자를 표시한 후 사용자 이름과 비밀번호를 설정합니다. 데이터베이스에 연결할 때 getUsername 및 getPassword 메소드는 저장된 값을 검색합니다. 자격 증명은 바이너리로 하드 코딩되지 않으므로 디컴파일로 인해 발생하는 보안 위험이 완화됩니다.

중요 사항:

  • 기본 설정 파일은 일반 텍스트 XML 파일입니다. 무단 사용자가 액세스하지 못하도록 방지합니다(UNIX 및 Windows 권한 등).
  • 올바른 아키텍처는 애플리케이션 컨텍스트에 따라 다릅니다. 사용자가 자격 증명을 알고 있고 알 권한이 있는 경우 위의 해결 방법이 작동합니다. 그러나 사용자로부터 자격 증명을 숨기려는 경우 중간 계층에서 사용자를 인증하고 제한된 작업을 허용하는 다중 계층 아키텍처를 권장합니다.
  • 다중 계층 아키텍처에서 사용자는 다음을 통해 인증을 위한 자체 자격 증명을 갖습니다. 비즈니스 로직 계층(데이터베이스는 아님) 따라서 클라이언트 애플리케이션은 데이터베이스에 직접 연결되지 않습니다.

위 내용은 디컴파일로부터 Java 코드의 MySQL 자격 증명을 보호하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿