2014-03-24 3 views
0

Android 앱을 개발했습니다. 이 응용 프로그램은 HttpClient 및 HttpPost 클래스를 사용하여 웹 서버 (apache + mysql)에 데이터를 보냅니다.안전한 방법으로 Android 및 Apache

그러나 이렇게하면 악의적 인 공격자가 사용자 정의 게시 요청을 웹 서버에 보내고 데이터베이스를 손상시킬 수 있습니다.

1 - 응용 프로그램에서 데이터를 보내기 전에 데이터를 암호화 한 다음 일부 공유 키 알고리즘을 사용하여 웹 서버에서 데이터를 해독 할 수 있습니까? 아니면 말도 안되는거야?

2 - 이전 솔루션이 좋지 않은 경우 ssl 솔루션을 구현하기 위해 요약 된 방법으로 무엇이 필요합니까?

나는 ssl과 android에 관한 많은 기사를 읽었지만 여전히 약간 혼란 스럽다. 나는 app과 apache 모두에서 코드를 변경해야한다고 생각한다. 아무도 이것에 대처하기 위해 튜토리얼에 대해 말해 줄 수 있습니까?

+0

SSL은 데이터베이스에 대한 공격으로부터 사용자를 보호하지 않습니다. 귀하의 서버 **는 ** 전송 된 모든 내용의 유효성을 확인하고 맘에 들지 않는 것을 거부해야합니다. –

답변

1

데이터를 반드시 암호화 할 필요는 없습니다 (공격자가 데이터를 읽지 못하게하려는 경우에만 필요함).

당신이 필요로하는 것은 :

  1. 인증는 (. 즉, 앱이) 신뢰할 수있는 사용자로부터 그래서 요청 만이
  2. 을 허용하는
  3. 확인 : 그래서 전용 "올바른"요청이
  4. 를 처리

인증은 Apache 서버에 HTTP Basic Access Authentication을 설정하는 것처럼 쉽습니다. 사용자와 비밀번호를 설정하고 앱이이 자격 증명을 사용하여 서버에 액세스하게하십시오. 인증되지 않은 요청은 403으로 거부됩니다.

유감스럽게도 기본 인증은 대부분 앱과 서버 간의 트래픽을 조사하는 사용자가 자격 증명을 획득 한 다음 자신의 요청을 위조 할 수 있기 때문에 대부분 안전하지 않습니다.

OAuth가 더 관련되어 있지만 더 나은 옵션이 될 것입니다. 다음은 클라이언트 측을 다룬 멋진 자습서입니다. http://nilvec.com/implementing-client-side-oauth-on-android.html

유효성 검사는 데이터를 사용하기 전에 위생 처리가 필요함을 의미합니다. 서버 응용 프로그램은 모든 데이터가 잠재적으로 잘못되었거나 위험하다고 판단하고 처리하기 전에 입력을 적절하게 필터링해야합니다.

관련 문제