0

자바 패키지의 일부 공공 기능에 대한 악의적 인 변경이나 수정을 방지 할 수있다. 필자는 공용 액세스로 패키지에 몇 가지 메소드를 작성했습니다. 자바 : 나는 우리의 프로젝트에 대한 라이센스 관리 시스템을 쓰고 있어요 그리고 정기적으로 제대로 작동하는 것이 중요합니다

// code to check correctness of password 
public boolean checkIfPasswordIsCorrect(String password){ 
    // my code here 
} 

예를

에 지금 누군가가 .jar 또는 .war 파일에 내 .class 파일을 변경하면 불안. 그렇다면 예를 들어 그 또는 그녀는 항상 사실을 반환하도록 클래스와 메소드를 다시 작성할 수 있습니다. 그 후에 내 시스템은 부정확하게 작동합니다. 즉, 은 항상 사용자가 서비스에 액세스하는 사용자를 인증합니다.

아마 솔루션 그냥 클래스 나 패키지의 이름을 변경 및 릴리스 단계에서 내 코드를 혼합하는 내 코드를 당황하게 할 수있다. 또 다른 아이디어가 있습니까? 감사.

편집 : 내 코드를 공개하고 싶지 않습니다. 방금 컴파일 된 .jar 또는 .war 파일을 고객에게 릴리스합니다.

+0

사용 난독 화 도구 당신은 무엇을 의미합니까 – Raghunandan

+1

? 시스템에 사용자에게없는 권한이 있습니까? 시스템에 하드 코드 된 암호가 있습니까? –

+0

@amadeus가 지적한 두 가지 점은 (게임의 높은 점수보다 더 중요한 것이 그것에 달려있는 경우) 설계상의 결함입니다. – Thilo

답변

4

당신은 그것을 변경하고 "공식적인"버전 척 다른 사람에게주는 누군가를 방지하기 위해 코드를 로그인 할 수 있습니다.

당신은 그들이 자신을 실행하는 코드를 변경하지 못하도록 할 수 없다. 그들이 프로그램 방식을 깰 경우

, 그건 그들의 잘못이다. 이런 식으로 시스템을 손상시킬 수있는 경우 (예 : 다른 사람의 파일에 무단으로 액세스하는 경우) 시스템의 설계 결함입니다. 수정할 수없는 클라이언트 소프트웨어에 의존 할 수 없습니다. 훼손되어서는 안되는 코드는 컴퓨터에서 실행되고 서비스로 액세스 할 수 있어야합니다.

실용 예 : 그래서 대신 암호를 사용하여 파일을 암호화 암호를 확인하고 (즉, 코드를 변경하여 우회 할 수 있습니다) 로컬 파일 여부에 대한 액세스 권한을 부여은 (경우에 액세스 할 수있는 방법이 없습니다 코드를 얼마나 엉망이든 관계없이 암호를 모를 수 있습니다. 또는 파일을 서버에 보관하고 암호가 제공되면 액세스 만 허용합니다 (서버에서 확인). _system이 incorrect_ 작동과 같은 난독의 http://proguard.sourceforge.net/로

+0

고맙습니다. 우선, 제 코드를 공개하고 싶지 않습니다. 방금 컴파일 된 .jar 또는 .war 파일을 고객에게 배포합니다. 둘째로 나는 암호화와 'On time password'를 사용한다; 그러나 나는이 기능들을 공개로 사용할 필요가있다. 누군가 내 코드에서 공용 메소드를 오용 할 수 있습니다. 따라서 암호 확인과 같은 중요한 기능을 기능으로 변조하지 않으려는 경우; 이는 주목할만한 설계 방법이 될 수 있습니다. – sajad