2013-03-07 4 views
6

우리는 개발중인 안드로이드 애플리케이션에서 사용하기 위해 Rails에서 JSON REST API를 개발 중입니다. Google의 특정 Android 애플리케이션에서만 사용할 수 있도록 API를 보호 할 수있는 방법이 있습니까?안드로이드 클라이언트에서 사용할 REST API 보안

API는 읽기 전용이며 모든 종류의 사용자 관련 정보 또는 기타 중요한 정보를 포함하지 않습니다. 그러나 합리적인 한도 내에서 남용을 방지하고 앱 사용에만 제한을 가하고 싶습니다.

나는 쉽게 API에 인증 토큰을 추가하고 응용 프로그램으로 배포 할 수도 있지만 : 우리는 아마 우리가 기본 인증을 사용하는 경우, SSL로 API를 통해 이동해야 할 것

  1. .
  2. 확실한 사람이 Android APK 바이너리를 열고 어쨌든 인증 토큰을 알아내는 것은 사소한 일입니다.

상황은 당신이 당신의 서비스를 이용하고자하는 모든 밖으로 비밀을 제공 할 필요가 반대 가게에 자신의 무선 랜 암호를 게시 카페와 유사한 것, 그래서 거의 처음부터 그것을 가지고 무의미한 것 같다 .

가장 적절한 접근 방법은 무엇입니까?

답변

6

문서화되지 않은 공개 API를 한 응용 프로그램에서만 액세스 할 수 있도록 보안을 설정하려면 사람들이 API를 사용하지 못하게하려면 API를 사용해야합니다.

API를 사용할 수있는 모든 것을 시도 할 사람들을 의미합니다.

Auth 토큰을 추가하지 않을 경우 사소한 것이 아니라 API를 우연히 발견하는 사람들을위한 큰 디딤돌이됩니다. 그리고 이것을 구현하는 것은별로 좋지 않습니다.

이 인증은 사용자 기반이 아니라 응용 프로그램 기반이므로 인증이 사용자 입력에 의존하지 않기를 원합니다. 요청은 신청서에 의해 순전히 완료되어야합니다.

어쨌든 그렇게해야합니다 (하드 코딩 된 토큰 추가). 결정된 사람이 액세스를 발굴하고 토큰 및 방법을 요청하는 것은 매우 어려운 일입니다.

상황에 따라 다르지만 SSL 및 하드 코드 된 토큰을 사용해야합니다.

일부 추가 보안 :

  • 릴리스에만 토큰 주기적으로 요청을 보낼 필요가 응용 프로그램에 액세스 토큰. 적은 수의 사람들이 하드 코드 된 요청 토큰을 가로 채기를 의미하지만, 이 만료되는 세션 기반 액세스 토큰은 차단합니다. 어쩌면 모든 응용 프로그램 설치마다이 작업을 한 번 수행하면됩니다.
  • 공중으로 보내기 전에이 요청 토큰을 인코딩하십시오. 의미 사람들이 앱을 디 컴파일해야합니다.
  • 코드를 난독 화 (디 컴파일 어려움).