2011-04-05 2 views
2

jQuery Mobile 및 Phonegap을 사용하여 두 상점에 표시 될 iOS & Android 앱을 제작하고 있습니다. 앱은 자바 스크립트와 일반적인 ajax/JSONP 호출을 사용하여 원격 서버의 데이터를 가져옵니다.서버 측 API에 액세스하는 Google의 phonegap 앱인지 확인하는 방법은 무엇입니까?

우리는 어떻게 든 백엔드로 응용 프로그램을 인증하기를 원합니다. 일반적으로 특정 도메인의 원격 API에 대한 액세스를 제한 할 수 있습니다. 파일을 로컬에 저장하고 file : // 프로토콜을 사용하기 때문에이 작업을 수행 할 수 없습니다. 그 이유는 JSONP를 사용하여 동일한 출처 정책 문제를 피하는 이유입니다 .

passphrase + timestamp + deviceID를 사용하여 인증 문자열을 생성하고 암호화 한 다음 서버 측에서 동일한 작업을 수행하려고했습니다. 우리는 곧 사람들이 자바 스크립트 파일에 쉽게 액세스 할 수 있고 자바 스크립트 난독 화가 지금까지 읽은 것에서 100 % 안전하지 않다는 것을 깨달았습니다.

API 액세스를 앱에만 제한하는 방법에 대한 아이디어가 있거나 가능한 모든 작업을 수행하고 API를 공정하게 여는 경우일까요?

감사합니다.

답변

1

Phonegap은 전용 앱 프로젝트로 배포됩니다. 이렇게하면 컴파일되고 다소 안전 할 새로운 API 함수를 추가하여 수정할 수 있습니다.

api의 새 함수는 지정된 시드의 해시를 계산하여 반환합니다. 그런 다음 서버 측에서 동일한 코드가 필요합니다.

네이티브 앱 코드에 신중하게 삽입 된 시드와 소금의 해시이면 충분합니다.

바이너리는 사람들이 소금을 발견하지 못하게하기에 충분할만큼 난독 화 될 수 있으며 사용할 수있는 추가 문제가 있습니다. 종자에 의해 결정되는 긴 끈 부분으로 소금을 선택하십시오.

0

JavaScript 난독 화는 0% secure입니다. 그것은 억지력이며 진정한 해결책은 아닙니다. 리버 서를 통해 축소/obsfucated JavaScript를 실행할 수 있으며 전체 코드를 얻을 수 있습니다. 또한 약간의 노력으로 누구나 PhoneGap API가 기기 정보에 대한 응답을 가짜로 만들 수 있으므로이를 방지하는 유일한 방법은 앱 컨테이너에서 인증서를 사용하여 앱 내에서 초기 핸드 셰이크를 전달하는 것입니다. 아이폰과 안드로이드 접근 방식은 세부 사항에 따라 다르지만,이 문제에 대한 유일한 진정한 해결책이다. 소스 IP를보고 이동 통신사 출신인지 확인하는 등의 다른 접근법을 사용할 수도 있지만 이는 움직이는 목표입니다.

0

나는 그것이 잡종 apps의 catch22의 종류라고 생각한다. 아마 가장 좋은 방법은 네이티브 코드에 의해 생성 된 토큰을 사용하는 것입니다. JS로 다시 전달되는 원시 코드로 사용자 지정 기능을 만드는 방법을 보여주는 자습서가 있습니다. 나는 먼저 거기를 확인한다.

관련 문제