2016-10-14 4 views
0

며칠 전 한 사람이 내 응용 프로그램을 디 컴파일하여 내 소스 코드에 문제점을 표시합니다. 링크 및 애플 리케이션의 소스 코드에서 내 서버의 암호를 하드 코딩했다, 나는 디 컴파일을 통해 내 소스 코드를 볼 수있는 몰랐다. 나는 프로 가드를 사용하지만 프로 가드는 문자열을 난독 화하지 않습니다. 이 일을 올바르게하는 방법이 궁금합니다. 내 앱이 어떻게 API 호출을하고 서버가이를 인증 할 수 있습니까? 나는 연구를했는데 이것에 관해 많은 내용을 보지 못했습니다. 내 앱은 사용자와 비밀번호를 관리하지 않습니다. 내 코드에 저장 한 사용자 및 암호는 서버에 로그인하는 사용자와 암호입니다.안드로이드 서버 통신 보안

+0

나는이 게시물을 언급하고 있다고 생각합니다. http://stackoverflow.com/questions/14570989/best-practice-for-storing-private-api-keys-in-android –

답변

0

예, 디 컴파일 된 Java 코드가 키 등을 가져 오는 것을보기가 쉽습니다.

은 몇 가지 할 수 있습니다 :

  1. 깊은 관리자 권한을 가진 비밀하지 않는 "응용 프로그램 키"또는 "토큰"을 확인하십시오. 많은 SaaS/API 제공 업체에서 여러 개의 키를 제공합니다. 하나는 수행 할 수있는 특권/조치가 제한된 클라이언트 키와 더 많은 권한을 가지고 있지만 클라이언트 코드를 통해 누출되지 않는 서버 키입니다. 동일한 경우 서버 로그인/관리자 비밀번호를 공유해서는 안됩니다. 최소 권한 원칙 (https://en.wikipedia.org/wiki/Principle_of_least_privilege)

  2. 문자열이 정적 최종일 수 있는지 확인하십시오. 이 경우 문자열 인라이닝을 허용하는 컴파일러 및 Proguard. 이렇게하면 문자열이 무엇인지 알기가 더 어려워집니다. "Config"클래스가 하나뿐이라면 facebookAppId, 'secret'googleSecret 등에서 'facebook'을 검색하는 것이 매우 쉽습니다.

  3. 정말 안전하려면 다음과 같이 일부 암호화 또는 다른 알고리즘을 사용할 수 있습니다. 문자열이지만 암호화 된 암호도 코드 자체에 저장한다는 의미입니다. 일반적으로

, 나는 (1) 제공 믿습니다 가장 당신은 항상 클라이언트의 모든 문자열이 안드로이드/자바 여부 Proguard와 또는 축소 된 자바 스크립트와 함께, 해킹/찾을 수 있습니다 가정해야하기 때문이다.

관련 문제