2012-02-06 3 views
4

http webservice를 사용하여 서버에 데이터와 명령을 보내는 안드로이드 및 ios 응용 프로그램이 있습니다. 가짜 클라이언트가 서버에 무언가를 보낼 수있는 가능성을 어떻게 막을 수 있습니까? 데이터/명령이 실제로 우리의 애플 리케이션에서 오는 경우 어떻게 serversidely 결정할 수 있습니다.ios 응용 프로그램의 "fake-client"금지

+0

오해의 소지가 있으므로 Android 태그를 제거하고 싶을 수 있습니다. –

+0

우리는 또한 안드로이드 애플 리케이션을 가지고 있지만 그것을 쓰는 걸 잊어 버렸습니다. – rakete

+0

아직 불분명 한 점이 있습니까? 아니면 질문에 대한 답변입니까? – DasFuxx

답변

9

당신은 정말로 그것을 막을 수 없습니다. 귀하의 서비스를 악용하는 사람들을 더욱 어렵게 만드는 몇 가지 기술이 있습니다.

간단한 점검은 웹 서비스를 호출하는 사용자 에이전트를 검사하는 것일 수 있습니다. 또 다른 일반적인 방법은 웹 서버에서 사용자/비밀번호 인증을 통해 간단한 인증을 사용하는 것입니다. 사용자 이름과 비밀번호가 앱에 임베드됩니다.

시간이 충분하다면이 두 가지 방법을 조합하여 사용하고 내장 SSL 인증서로 인증하는 것에 대해 생각해야합니다. 당신은 단순히 프로젝트에 이것을 추가 할 수 있으며, 누군가가 정말로 당신의 서비스를 남용하고 싶다면, 최소한 애플리케이션에서이 인증서를 추출해야합니다.

다른 유용한 기술이 있지만 리버스 엔지니어링 또는 네트워크 스니핑을 방지 할 수 없습니다.

감사

, fuxx

+0

이외에도 서버에서 주기적으로 임의의 인증 토큰을 생성하고 푸시를 통해 클라이언트에 보낼 수 있습니다. 매시간 말하십시오. 클라이언트는이 토큰을 사용하여 웹 서비스를 호출해야합니다. – HeikoG

2

oAuth를 구현합니다. 이러한 솔루션을 구현하는 방법에 대한 자세한 내용은 the following link을 참조하십시오.

+0

oAuth를 사용하면 모바일 앱이 클라이언트 비밀 정보 (비밀 정보)를 비밀로 유지할 수 있다고 가정 할 수 없으므로 oAuth를 사용하여이 문제를 해결할 수있는 방법을 알지 못합니다. 앱의 클라이언트 자격증 명과 위조가 될 수 있습니다. – KFL

1

당신은 할 수 없습니다. 그것은 간단합니다 ...

3

가장 강력한 솔루션은 시도하지 않아야합니다. DasFuxx의 답변과 같은 기법을 사용하면 희미하게 어려워 질 수 있지만 누군가는 항상 응용 프로그램을 디 컴파일하여 포함 된 비밀 정보를 얻을 수 있습니다.

클라이언트를 신뢰하지 마십시오

대신, 멀티 플레이어 게임 개발의 규칙을 따릅니다.

응용 프로그램을 사용자 인터페이스로 생각하지 마십시오. 네트워크 프로토콜/API을 사용자 인터페이스로 생각하십시오. 그런 다음 악용 될 수 없도록 인터페이스를 디자인하십시오.

완전히 그렇게 할 수는 없지만 성공할 경우 진정한 보안을 누릴 수 있습니다 (DRM 시스템과 같은 패배의 싸움이 아닌).

관련 문제