2011-04-20 3 views
0

iPhone 게임에 토너먼트 모드를 추가하고 Rails 3 앱에서 토너먼트 통계를 추적하고 싶습니다. 기본적으로, 경기가 끝날 때마다, 승자는 내 레일에 같은 POST 요청을 사용하여 3 응용 프로그램 ...Rail3 앱이 내 iPhone 앱의 요청을 어떻게 인증합니까?

POST http://myrail3app.com/tourney/matchresults?winner=username 

분명히 누군가가 만들 그 요청의 URL이 만들어지고 모니터링 할 수있는 동일한 요청을보고됩니다 그들의 컴퓨터에 반복해서 그리고 속임수를 쓰십시오. 그래서 레일즈 3 앱에 대한 요청을 인증하는 몇 가지 방법을 원합니다. 요청은 내 iPhone 앱에서만 발생합니다. 당신의 생각?

지혜에 감사드립니다.

답변

1

의 선택 목록에 응답 할 수 있습니다.

가) 당신의 응용 프로그램과 레일 서버

b) 페이스 북과 아마존이 그들의 요청에 따라 singature를 처리하는 것과 비슷한 서명 생성 서비스를 사용할 수 있습니다.

  • 당신은 응용 프로그램 (어딘가에 당신의 목표 C 코드 에서 가장 가능성)에 비밀 키를 제공하고, 당신이 당신의 비밀 키를 사용하여 응용 프로그램 를 보내는 모든 매개 변수를 기반으로 HMAC 서명을 생성 ( http://www.ouah.org/ogay/hmac/ 참조). 에 전송 된 매개 변수를 사용하여 레일 측면에 다른 서명을 생성하고 (예 : 레일 : OpenSSL::HMAC.hexdigest('sha256', message, key))의 서명을 비교하십시오. 두 서명 이 다른 경우 누군가 이 매개 변수로 변조되었음을 알고 있습니다.

  • 참조 페이스 북 (http://developers.facebook.com/docs/authentication/signed_request/) 아마존 (http://docs.amazonwebservices.com/AWSSimpleQueueService/2007-05-01/SQSDeveloperGuide /SummaryOfAuthentication.html) 에 대한 예제가 나와 있습니다.

c) 앱과 레일 서버간에 다른 데이터를 공유할지 여부에 따라 레일 측에 Oauth 제공 업체를 구현할 수 있습니다.

+0

감사합니다. Dominic, 너무 도움이됩니다! HMAC 접근법에 대한 질문은 보안을 위해 요청이있을 때마다 매개 변수를 다르게 보내야합니까? 즉, 서명을 생성하는 데 사용하는 유일한 데이터가 비밀 키와 사용자 이름 인 경우 단일 사용자로부터 오는 모든 요청은 매번 동일하게 적용됩니다. 그러면 위조 될 수 있습니까? – BeachRunnerFred

+0

사용자 이름으로 타임 스탬프를 보냅니다. 예 : 획기적인 가치 http://mysite.com?username=foo×tamp=1303268516&signature=abc123 – Dominic

+0

Btw, 당신은 비밀 키로 서명 된 서명을 보내고 있습니다. 매개 변수를 변경하려는 경우 (매개 변수를 변경하고 새 매개 변수 및 비밀 키를 기반으로 새 서명을 다시 생성하여) 매개 변수를 변경하려면 비밀 키를 알아야합니다. 그들이 비밀 키에 대한 액세스 권한을 가지고 있지 않은지 확인하십시오. – Dominic

0

당신은 단지 사이트는 반드시 그 데스크톱 브라우저에서 여러 번 다시 게시 누군가를 멈추지 않는다 제이슨에 의해 언급 한대로 UDID를 사용하여 아이폰 아이디의

NSString *deviceUDID = [myDevice uniqueIdentifier]; 
+2

이없는 사용자는 자신의 휴대 전화에서 나오는 POST 요청을 검사 한 후 자신의 컴퓨터에서 위조를 만들 수 있습니다 ? – BeachRunnerFred

+0

절대적으로. 그러나 그것은 모든 어플리케이션에서 발생할 수 있습니다. 앱과 서버 간의 통신도 암호화하고 싶다면 가능합니다. 그러나 뚫을 수없는 것은 없습니다. 당신은 단지 그런 종류의 일을 위해 구축 된 작업과 위조와 관련된 가능성과 문제점에 대해 무게를다는 것입니다. SSL을 통해 webservice를 구현할 수도 있지만, 아직 조금 밖에 나와 있지 않습니다. –

관련 문제