2011-10-07 6 views
2

내 웹 사이트 용 안드로이드 응용 프로그램을 개발하고 싶습니다. 일을하는 한 가지 방법은 사이트 용 API를 사용하고 앱이 해당 API를 사용하도록하는 것입니다. 그러나이 API를 내 안드로이드 애플 리케이션에 의해 사용하려면, 다른 클라이언트가이 API를 사용하고 싶지 않습니다.내 안드로이드 클라이언트 전용 웹 사이트 API

이것을 보장 할 방법이 있습니까?

나는 그것을하는 한 가지 방법을 생각할 수 있습니다 : 앱에 비밀을 넣고 앱이이 비밀을 항상 API에 전달하게하십시오. 그러나 어떤 패킷 스니퍼가 매개 변수와 따라서 비밀을 쉽게 스니핑 할 수 있기 때문에이 접근법이 얼마나 안전 할 지 확신하지 못합니다. 다른 제안?

답변

2

마지막으로 안드로이드 개발자의 블로그 article에서 답변을 얻었습니다.

1

짧은 대답은 아니요, 죄송합니다. 만약 누군가 정말로 귀하의 사이트/api/device/program/을 여기에 삽입하고자한다면을 삽입하십시오. 그러면 그들은 시간과 자원을 갖게 될 것입니다.

귀하의 질문에 직접 대답하려면 앱에 키를 넣는 것이 안전하지 않습니다. 누구든지 앱을 디 컴파일하여 원본 파일에서 키를 재구성하려고하므로 트래픽을 냄새 맡지 않아도됩니다.

+0

나는 이것에 흥미가있다.Java에 대해서는 충분히 알지 못하지만, 난독 화되어 컴파일 된 후에 실제로 이것을 디 컴파일하고 추출 할 수 있습니까? 예를 들어 블로그 게시물을보고 싶습니다. –

+0

큰 애플 리케이션이 이걸 어떻게 다루어야하는지 궁금합니다. – Bajji

+0

@MatthewRudy 정말 자바 클래스 파일을 디 컴파일 할 수 있습니다. proguard와 같은 난독 화 도구는 클래스와 변수의 이름을 바꾸어 코드를 해석하기는 어렵지만 불가능하지는 않습니다. 또한 문자열 리터럴은 인간이 읽을 수있는 것으로 끝나기 때문에 코드를 통해 API 키로 보이는 코드를 쉽게 찾을 수 있습니다. – slayton

4

이것은 내가 며칠 전에 답한 질문과 비슷하다고 생각합니다. Securing a REST API from Android

즉 공유 암호를 사용하여 모든 요청을 인증하는 방법을 찾으십시오.

경로와 매개 변수에 모두 비밀로 서명하면 다른 사람이 요청을 위조 할 방법이 없어야합니다.

1

내가 틀렸다면 나를 교정하십시오! 패킷 스니퍼는 암호화되지 않은 WiFi 및 (지금) 드문 네트워크 구성 (라우터 또는 스위치로는이를 막음)에서만 사용할 수 있습니다.

심각한 문제인 경우 보안 연결 (https)을 고려해야합니다.

그렇다면 표준 콘텐츠의 경우 암호 문구가 충분히 안전하다고 느낍니다. 많은 인기있는 웹 앱은 사용자가 로그인 할 수 있도록 http 이상으로 쿠키를 사용하지 않습니다. 이는 정확히 사용자가 제안한 것입니다.

+0

패킷 스니퍼는 암호화되거나 암호화되지 않은 네트워크상의 모든 패킷을 가로 챌 수 있습니다. 암호화는 패킷의 데이터 저장 방법 만 변경합니다. 실제로 여기서 두 가지 유형의 암호화를 참조하고 있습니다. 암호화 된 wifi는 사용자와 라우터 간의 패킷이 암호화됨을 의미합니다. Https는 귀하와 웹 사이트 간의 데이터가 암호화됨을 의미합니다. 둘 다 준 안전성이 있으며 둘 다 부서지기 쉬운 것으로 시연되었습니다. 결국에는 완벽한 암호화 알고리즘 같은 것은 없습니다. – slayton

0

이 문제로 어려움을 겪었으며 API를 확보하기 위해 실제로 OAuth 버전을 구현했습니다. OAuth의 "로그인"부분을 수행하기 위해 브라우저를 시작하지 않으면 어려울 수 있습니다. 내 앱에 로그인 권한을 구운 다음 실제로 토큰 교환을 구현했습니다. 여기에 코드를 게시하는 데 너무 많은 시간이 소요되었지만 잘 작동합니다. 분명히 HTTPS는 추가적인 보안 수준을 요구합니다.

0

자신의 앱의 패키지 관리자로부터 어떤 종류의 서명을 다시 얻을 수 있다면 난독 화를 사용하여 훨씬 어렵게 만들 수 있으며 패키지 관리자의 서명/해시를 HMAC의 키로 사용할 수 있습니다 -SHA1.

당신이 그것을 사용하기가 더 어렵게 만들 것이라고했다면이 (How to get APK signing signature?)

을 시도해야 할 수도 있습니다. 분명히, 그것은 여전히 ​​디 컴파일 될 수 있지만, 만약 그들이 다시 컴파일/w 등 디버깅 등, 그것은 잘못된 열쇠를 것입니다. 그런 다음 실제로 루트 매니지드 장치에서 자체 패키지 관리자를 만들어 서명을 가져야합니다.

+0

유일한 문제는 누구나 서명 해시를 얻을 수 있다는 것입니다. 그래서 여러분이 이것을 약간의 코드에 전달하지 않으면 쉽게 해독 될 수 있습니다. – Chrispix

관련 문제