2010-02-13 9 views
3

내 아이폰 앱이 내 앱 엔진 애플리케이션을 사용하여 데이터를 보내고받을 수 있도록하려면 어떻게해야합니까? 아마 비밀 키를 써야 겠지만 어떻게해야할지 모르겠다. POST를 사용하여 https를 통해 내 정적 키를 보낼 수 있습니까? 또는 일부 동적 비밀 키 알고리즘을 사용해야합니까?아이폰 액세스를위한 앱 엔진 비밀 키

도움이 될 것입니다. 비요른

답변

2

아이폰 앱의 비밀을 유지할 수 있다고 생각한다면 HMAC이 필요합니다. 요청할 때마다 요청 텍스트를 비밀 키를 키로하여 HMAC-SHA1과 같은 함수에 전달하고 요청에 결과를 추가하십시오. 서버가 요청을 받으면 동일한 작업을 수행하고 HMAC가 일치하는지 확인하십시오.

+0

이렇게하면 보안 문제가 발생합니다. 누군가가 HMAC를 가로 챈 다음 악의적으로 동일한 데이터를 수백 번 서비스에 게시하여 데이터를 복제하면 어떻게됩니까? – Rippo

+0

그러면 문제가 생깁니다. 다른 어떤 계획과도 똑같은 문제입니다. 따라서 "아이폰 앱에 대한 비밀을 발견 할 수 있다고 생각한다고 가정 할 때 ..." –

+0

죄송합니다, 처음으로 귀하의 의견을 오독. 당신은 맞습니다 - 재생 공격을 막기 위해 넌스 (nonce) 및/또는 타임 스탬프 (timestamp)를 포함시켜야합니다. 물론 이것은 위협 모델에 따라 다르지 않을 수 있습니다. –

0

나는 무엇을 성취하려고하는지 완전히 모르겠습니다.

그러나 iPhone 앱 내부에 공유 된 비밀 또는 API 키가있는 것은 일반적으로 좋지 않습니다.

자신 만의 AppEngine 응용 프로그램에 대해 이야기하고 있습니다. 앱이 말하는 AppEngine 측에 간단한 (JSON 기반) 웹 서비스를 만들면 어떨까요? iPhone 앱에서 AppEngine 자격 증명을 직접 사용할 필요가 없습니다.

귀하의 질문에 대한 대답이 아니라면 자세한 내용을 제공해주십시오.

+0

저는 API 웹 서비스를 가지고 있지만, 아이폰 앱과 대화하기를 원합니다. 현재 상황에서는 API가 전 세계에서 사용할 수 있으므로 누구나 잘못된 데이터를 보낼 수 있으며 데이터베이스에 갖고 싶은 데이터로 데이터베이스가 채워집니다. – Bjorn

0

전달 된 데이터가 암호화되어 있으므로 웹 서비스에서 SSL 인증서를 사용하십시오.

암호화 된 SSL 연결은 클라이언트 와 서버 사이에 전송되는 모든 정보를 필요가 인터넷을 통해 차단에서 개인 정보를 보호 수신 소프트웨어에 의해 전송 소프트웨어에 의해 암호화 및 해독한다.

또한 서비스를 호출 할 때마다 데이터와 함께 정의한 단일 GUID를 보냅니다. 이 guid는 웹 서비스가 액션을 수행하기 전에 유효성을 검사해야합니다. 더 많은 정보를 잠그려면 이후의 모든 호출 서비스에 대해 다시 전달해야하는 GUID를 생성하는 서비스를 생성 할 수 있습니다.

다른 사람이 귀하의 매개 변수를 추측 할 수있는 서버에서 귀하의 wsdl을 볼 수 없도록하십시오.

RapidSSL의 SSL ceritifcate는 비용이 17 달러이므로 걱정할 필요가 없습니다.

+1

이것은 도움이되지 않습니다 - SSL 인증서는 클라이언트가 아닌 서비스의 신원을 확인합니다. 그는 클라이언트 인증서를 내장 할 수 있지만 App Engine은 클라이언트 인증서를 확인할 방법이 없습니다. –

+0

내 게시물을 읽었습니까? SSL은 사람들이 실제로 클라이언트와 서버간에 보내는 정보를 스누핑하는 것을 막을 수있는 방법 일뿐입니다. guid를 통해 전달하는 것은 좋은 방법처럼 보입니다. – Rippo