문제

Java 기반 데스크탑 응용 프로그램을 개발하고 있습니다. Application Object 모델에서 지속 해야하는 (가급적으로는 파일에) 생성 된 데이터가 있습니다. 다른 사람들이 데이터에서 객체 모델 세부 정보를 도출 할 수 없도록 지속 된 파일을 보호 해야하는 요구 사항도 있습니다. 이것들을위한 가장 좋은 전략은 무엇입니까? 이러한 요구 사항은 데스크탑 앱에서 매우 일반적이라는 인상을 받았습니다. 그러나 나는 그것에 대해 많은 유용한 정보를 찾을 수 없었습니다. 모든 제안에 감사드립니다.

도움이 되었습니까?

해결책

귀하의 질문에는 두 부분이 있습니다. 첫 번째 : 데이터를 지속하는 방법? 2 위 : 그들을 보호하는 방법?

데이터를 유지하는 방법에는 여러 가지가 있습니다. 간단한 XML, Java 직렬화에서 자체 데이터 형식에 이르기까지. "일반 텍스트"만으로 리버 엔지니어링 데이터를 방지하는 방법이 없습니다. 당신은 그것을 어렵게 만들 수 있지만 불가능하지는 않습니다. 불가능하게하려면 강력한 암호화를 사용해야하며 여기에 문제가 있습니다. 데이터를 암호화하고 안전한 토큰을 공개하지 않는 방법. 애플리케이션으로 보안 토큰을 배포하는 경우 애플리케이션을 찾는 데 시간이 걸리고 문제가 해결됩니다. 따라서 설치 중에 안전한 토큰을 입력하는 것은 옵션이 아닙니다. 사용자가 응용 프로그램을 사용하기 위해 인증 해야하는 경우 도움이되지만 동일한 문제입니다. 다음 옵션은 사용자 정의 보호 된 Bijection 알고리즘을 사용하여 데이터를 난독 화하는 것입니다. 마지막 옵션은 데이터 형식을 비공개로 유지하고이를 게시하지 않고 반대 엔지니어링을 방지하기 위해 응용 프로그램을 난독 화하지 않는 것입니다.

최상의 값은 사용자 정의 데이터 형식 및 난독 화 된 응용 프로그램을 사용하여 단순한 데이터의 난독 화 (XOR PrimEnumber)가 제공됩니다.

다른 팁

이 파일을 수정할 필요가 없으면 객체 그래프를 파일로 직렬화 할 수 있습니다. 내용은 이진이며 작성된 클래스 만 사용하여 읽을 수 있습니다.

또한 Java DB (1.5 이후 Java와 함께 배송)와 Hibernate와 같은 ORM 도구를 사용할 수도 있습니다.

편집하다

1.6 이후로 번들로 제공됩니다 http://developers.sun.com/javadb/

xstream 간단한 XML을 읽고 파일을 읽고 싶다면 작동합니다. Xstream을 사용하면 Java 객체를 가져 와서 작성하여 파일에서 읽을 수 있습니다.

진술서에 묵시적인 보안이 필요한 경우 ( "... 다른 사람들이 데이터에서 객체 모델 세부 정보를 도출 할 수 없도록 지속 된 파일을 보호하십시오." , xml 또는 무엇이든) 그 다음 해당 바이트 스트림을 파일로 암호화합니다.

Berkeley DB Java Edition과 같은 임베디드 데이터베이스를 사용해 볼 수 있습니다.http://www.oracle.com/database/berkeley-db/je/index.html). 그들의 직접적인 지속적인 계층 API는 당신의 요구에 가장 적합 할 것입니다. 데이터베이스 내용은 디스크의 파일에 동기화됩니다. 파일을 직접 보면 데이터에서 객체 모델을 파악하는 것은 쉽지 않습니다. 나는 그것에 대한 좋은 경험을 가지고 있었고, 그것은 빠르게 번개이며 데스크탑 응용 프로그램에서 잘 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top