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 메소드는 저장된 값을 검색합니다. 자격 증명은 바이너리로 하드 코딩되지 않으므로 디컴파일로 인해 발생하는 보안 위험이 완화됩니다.
중요 사항:
위 내용은 디컴파일로부터 Java 코드의 MySQL 자격 증명을 보호하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!