2010-06-18 6 views
4

웹 서버의 데이터베이스에 일부 데이터를 업로드하려는 Android 애플리케이션이 있습니다. MySql Java 라이브러리는 약 5MB 크기이므로 응용 프로그램에 포함시키지 않으려합니다. 그래서 PHP 스크립트에 대한 HTTP 요청을 만들고 URL을 매개 변수로 사용하여 데이터를 보냅니다. 내가 이것을 부를 수있는 유일한 방법은 무엇입니까? 사람들이 URL을 스니핑하고 응용 프로그램 외부에서 호출하도록하지는 않습니다.다른 사용자가 HTTP 요청을 호출하지 않도록 보호

감사합니다.

+1

이것은 PHP 기반의 인증을위한 고전적인 사례이며, 가장 가능성이 세션을 사용하여 ... –

답변

2

간단한 정적 토큰을 사용하여 클라이언트가 자신이거나 사전에 식별 된 경우 먼저 사용자 이름/암호로 인증하고 토큰을 생성 한 다음 추가 토큰을 사용하십시오.이 토큰은 얼마 후 만료 될 수 있습니다.

옵션 1 : http://[your은 XYZ 만

옵션 2로 알려져 요청 URL] & 키 = XYZ : 사용자 이름의 암호를 성공적으로 검증시 첫 핑 서버는 동적 토큰 [dKey]를 얻을 수는 로컬로 저장 . 그 다음 추가 요청. http://[your 요청 URL] & key = dKey.

옵션 2는 일반적으로 따르는 옵션입니다.

+0

감사합니다. 1 분 후에 만료되는 토큰을 생성합니다. 그것은 그것을하는 가장 좋은 방법 인 것처럼 보였습니다. – Kaloer

1

짧은 대답 : 당신은 스니핑을 막을 수 없습니다. 등

하지만 당신은 스니퍼의 삶을 어렵게하여/POST 미리 정의 된 매개 변수를 GET (또는 동적하지만, 알고리즘에 의해 계산 만 방법을 알고) 교환, 숨겨진 헤더 필드를 내부 인증의 일종을 구현할 수,

그러나이 모든 것은 또한 스니핑되거나 리버스 엔지니어링 될 수 있습니다.

가능한 Overkill Way는 일종의 비대칭 개인/공개 키 암호화/서명을 사용합니다. RSA와 같은. 앱은 공개 키만 포함하고 요청 데이터에 서명합니다. 그리고 서버 측은 비밀 개인 키를 가지며, 클라이언트 요청의 유효성을 검사하는 데이를 사용할 것입니다.

+0

개인 공개 키 것은 내가 아는 가장 좋은 방법입니다. 문제는 공개 키를 알고있는 모든 사람이 데이터를로드 할 수 있다는 것입니다. 그리고 열쇠는 약간의 노력으로 앱에서 추출 될 수 있지만 분명히 불가능하지는 않습니다. – Janusz

0

나는 안드로이드에 관해서는 거의 알지 못하지만, 그 질문에는별로 관련이 없습니다.

누군가가 URL (및 인증 세부 정보)을 스니핑하지 못하게하려면 SSL을 사용하는 것이 유일한 옵션입니다. 다른 한편으로는 단순히 다른 사람들이 URL에 액세스하는 것을 막고 싶다면 단순히 인증 문제입니다. SSL을 사용하지 않는다면 사람들이 트래픽을 스니핑하지 않도록 세션과 챌린지 기반 인증을 사용해야합니다. 다이제스트 인증을 통해이를 수행하거나 자신의 코드를 롤백 할 수 있습니다.

C.가

관련 문제