2013-06-17 2 views
0

저는 벨소리가 서버에 있으며 사용자가 다운로드 할 수있는 벨소리 갤러리 앱을 쓰고 있습니다.앱이 서버쪽에 있는지 확인하십시오.

내가 원하는 것은 연결이 실제로 내 앱에서 다른 앱이나 HTTP 요청 생성기가 아닌지 확인하고 확인하는 것입니다. 예를 들어 누군가 내 백 엔드를 사용하는 앱을 작성하고 앱에 광고를 게재하는 것을 좋아하지 않습니다. 그것은 리퍼러를 점검함으로써 방지되는 웹 사이트의 이미지 침출과 같습니다.

안드로이드 앱을 디 컴파일 할 수 있으므로 앱에 키를 삽입 할 수 없습니다. 나는 앱 서명을 얻고 키로 해시를 전송할 것을 생각했지만 다른 앱의 서명 해시에 액세스 할 수있는 앱과 같습니다.

네이티브 코드로 의사 소통을하는 응용 프로그램의 작성 부분은 어떻습니까? Java 코드처럼 쉽게 컴파일 할 수 있습니까?

정말 다른 방법으로 생각할 수 없으며 다른 사람들이 내 자원을 사용하여 자신의 이익을 위해 사용하는 것을 싫어합니다.

+0

앱이 귀하의 것임을 * 절대적으로 확신 할 수는 없습니다. - [여기] (http://stackoverflow.com/questions/4842709/android-verifying-the-applications-integrity-on-the-server)를 참조하십시오. -side? rq = 1) 및 [여기] (http://stackoverflow.com/questions/10155316/how-to-verify-that-server-calls-are-being-made-from-the-app?rq= 1). 당신이 정말로 묻는 것은 * 합리적으로 * 확실한 앱이 당신 것이고, 다른 안드로이드 개발자들이 사용하는 모범 사례가 있다면, 나는 그 대답을 알고 싶습니다. – DevOfZot

+0

@DevOfZot I 두 링크를 모두 보았지만 안전한 방법은 아닙니다. https를 사용하는 것 외에도 네이티브 코드로 앱의 통신 부분을 구현하는 것은 어떻습니까? 제 생각에 기본 코드를 디 컴파일하는 것은 dex2jar로 쉽게 디 컴파일되는 자바보다 훨씬 어렵습니다. – Ali

답변

3

할 수있는 일이 몇 가지 있습니다.

  1. 자신의 인증 기관을 만들고 응용 프로그램과 함께 인증서를 보내고 양방향 TLS 인증을 사용하십시오. 이것은 디 컴파일과 리버스 엔지니어링을 보호하지 못하면서 트래픽을 보호합니다.
  2. 슬라이드 덱 this의 조언을 사용하여 수정 및 디버거를 감지하십시오.
  3. Jelly Bean의 하드웨어 지원 secure storage을 사용하십시오.

그러나 결국 DRM은 잃어버린 전투입니다. 사용자가 루트 액세스 권한을 갖고있는 경우 모호하지 않더라도 모든 베팅이 해제됩니다 (기본 라이브러리). 유일한 질문은 데이터가 얼마나 중요한지입니다. 응용 프로그램의 90 %에서 ProGuard를 통해 실행하면 (특히 데이터 흐름 난독 화를 사용하는 경우) 해체가 거의 불가능합니다. 인증서 접근법과 함께, 그것은 대부분의 것들에 충분해야합니다.

또는 모델을 변경하여 앱이 아닌 사용자를 인증하십시오. 이는 훨씬 간단합니다.

+0

네이티브 코드 사용은 어떻게됩니까? – Ali

+0

어때? 그것은 만병 통치약이 아니며, 여전히 조금 낫습니다. "보안"이되는 것이 아니라 앱을 모호하게 만들고 앱을 전반적으로 관리하기가 훨씬 어렵습니다. – Delyan

+0

그래서 일반적인 방법은 없습니다. – Ali

관련 문제