며칠 전 한 사람이 내 응용 프로그램을 디 컴파일하여 내 소스 코드에 문제점을 표시합니다. 링크 및 애플 리케이션의 소스 코드에서 내 서버의 암호를 하드 코딩했다, 나는 디 컴파일을 통해 내 소스 코드를 볼 수있는 몰랐다. 나는 프로 가드를 사용하지만 프로 가드는 문자열을 난독 화하지 않습니다. 이 일을 올바르게하는 방법이 궁금합니다. 내 앱이 어떻게 API 호출을하고 서버가이를 인증 할 수 있습니까? 나는 연구를했는데 이것에 관해 많은 내용을 보지 못했습니다. 내 앱은 사용자와 비밀번호를 관리하지 않습니다. 내 코드에 저장 한 사용자 및 암호는 서버에 로그인하는 사용자와 암호입니다.안드로이드 서버 통신 보안
0
A
답변
0
예, 디 컴파일 된 Java 코드가 키 등을 가져 오는 것을보기가 쉽습니다.
은 몇 가지 할 수 있습니다 :
깊은 관리자 권한을 가진 비밀하지 않는 "응용 프로그램 키"또는 "토큰"을 확인하십시오. 많은 SaaS/API 제공 업체에서 여러 개의 키를 제공합니다. 하나는 수행 할 수있는 특권/조치가 제한된 클라이언트 키와 더 많은 권한을 가지고 있지만 클라이언트 코드를 통해 누출되지 않는 서버 키입니다. 동일한 경우 서버 로그인/관리자 비밀번호를 공유해서는 안됩니다. 최소 권한 원칙 (https://en.wikipedia.org/wiki/Principle_of_least_privilege)
문자열이 정적 최종일 수 있는지 확인하십시오. 이 경우 문자열 인라이닝을 허용하는 컴파일러 및 Proguard. 이렇게하면 문자열이 무엇인지 알기가 더 어려워집니다. "Config"클래스가 하나뿐이라면 facebookAppId, 'secret'googleSecret 등에서 'facebook'을 검색하는 것이 매우 쉽습니다.
정말 안전하려면 다음과 같이 일부 암호화 또는 다른 알고리즘을 사용할 수 있습니다. 문자열이지만 암호화 된 암호도 코드 자체에 저장한다는 의미입니다. 일반적으로
, 나는 (1) 제공 믿습니다 가장 당신은 항상 클라이언트의 모든 문자열이 안드로이드/자바 여부 Proguard와 또는 축소 된 자바 스크립트와 함께, 해킹/찾을 수 있습니다 가정해야하기 때문이다.
관련 문제
- 1. 서버 간의 보안 통신
- 2. 안드로이드 보안 HTTP 통신
- 3. 안드로이드 클라이언트 서버 통신
- 4. 안드로이드 클라이언트 서버 통신
- 5. 안드로이드 - 웹 서버 통신
- 6. 가장 빠른 안드로이드 서버 통신
- 7. 서버 간 서버 보안 HTTPS가없는 PHP 통신
- 8. 안드로이드 앱과 서버 간의 클라이언트 서버 통신
- 9. C# 클라이언트와 PHP 서버 간의 보안 통신
- 10. Java 클라이언트와 서버 간 보안 통신
- 11. C# 클라이언트와 Java 서버 사이의 보안 통신
- 12. 크롬 확장과 서버 간의 보안 통신
- 13. Adobe Air와 서버 간의 통신 보안
- 14. 웹 페이지와 서버 사이의 보안 통신
- 15. 클라이언트/서버 데이터 보안. (안드로이드)
- 16. 안드로이드 보안 서버 클라이언트 연결
- 17. TCP 서버 - 서버 통신
- 18. Oauth와의 API 통신 보안
- 19. 소켓베이스 안드로이드 클라이언트와 PHP 서버 간의 통신
- 20. 안드로이드 소켓 프로그래밍 : 클라이언트 서버 통신?
- 21. 서버/클라이언트 안드로이드 PC 통신 문제
- 22. 안드로이드 클라이언트 및 서버 통신 문제
- 23. 라즈베리 파이와 안드로이드 사이의 클라이언트 - 서버 통신
- 24. 안드로이드 응용 프로그램, 클라이언트 - 서버 통신
- 25. 안드로이드와 MySQL 서버 통신
- 26. Socket.IO 서버 - 서버 통신
- 27. PCD/리더와의 보안 요소 통신
- 28. android의 보안 소켓 통신
- 29. MSMQ에 대한 보안 통신
- 30. 보안 통신 오류입니다. FTP
나는이 게시물을 언급하고 있다고 생각합니다. http://stackoverflow.com/questions/14570989/best-practice-for-storing-private-api-keys-in-android –