2012-05-31 1 views
0

나는 안드로이드 애플 리케이션에서 정보를 수신하고 그것을 처리하는 PHP 스크립트에 데이터를 보내고 있습니다. 보안 문제를 발견했습니다 : 누군가가 URL을 발견하면 (예 : mydomain). com/recievedata.php), 누구든지 내 시스템에 데이터를 보낼 수 있습니다.안드로이드와 PHP 연결, 보안 방법

클라이언트가 데이터를 보내는 데 앱을 사용하는 가장 좋은 방법은 무엇입니까?

감사합니다.

+1

요청 헤더에 특별한 내용을 추가 할 수 있습니까? 이것은 여전히 ​​깨질 수 있지만 URL을 보지 않고서는 깨질 수 있습니다. – kosa

+0

무엇과 같은 특별 콘텐츠? 어떤 사양이나 무언가가 있습니까? 감사합니다 – Mario

답변

6

내가보기에 쉬운 방법 중 하나는 비밀 키를 포함시키는 것입니다. 예를 들어 POST 데이터에 secret=3CH6knCsYmvA2va8GrHk4mf3JqmUctCM 매개 변수가있을 수 있습니다. 그런 다음 receivedata.php의 상단에 필요한 것은 쉽게 random.org에서 임의의 문자열을 생성 할 수 있습니다

if($_POST['secret'] != '3CH6knCsYmvA2va8GrHk4mf3JqmUctCM') { 
    header('HTTP/1.1 403 Forbidden'); 
    error_log("ERROR: wrong secret: " . $_POST['secret']); 
    exit("Access denied"); 
} 

입니다.

물론 이것은 가장 안전한 방법이 아니며 문자열이 APK의 일반 텍스트로 저장 될 수도 있습니다 (시작 코드를 보내는 데이 코드를 사용하지 마십시오!). 그러나 대부분의 사람들을 쉽게 지켜줄 수있을만큼 쉽습니다. . 이것은 게임에 대한 플레이어 점수를 보내는 데 적합 할 수 있습니다.

+0

안녕하세요, 이것은 코드를 작성한 방법입니다.하지만 그들은 등록 및 기타 사항에서 user_id와 같은 데이터를 보낼 정도로 안전하지 않다고 나에게 말했습니다. 감사. – Mario

+0

다른 사람들이 무엇을 원하니? 그들은 사용자가 로그인하기를 원합니까? 데이터를 암호화하여 전달해야합니까? 이들은 서로 다른 유형의 관심사입니다. –

1

유일한 방법은받는 데이터를 신뢰하지 않는 것입니다. 악의적 인 사람이 만든 조작 된 데이터에 적합한 방식으로 취급하십시오.

3

PHP와 더 비슷합니다. 여기 보안을 위해해야 ​​할 일들이 있습니다.

  • 동기화 앱이와 PHP 사이에 해시를 추가 (일명 비밀 키)
  • 가 (SQL 주입한다)
  • 그들을 탈출하지 않고 쿼리 datas를 보내지 않는 스크립트가 모든 입력 데이터를 제어해야합니다
  • 항상 당신이 receieve 데이터를 구문 분석 가능한 개인만큼 당신의 기능을 유지하는 대신 GET 또는 요청
  • 을의 POST를 사용하는 것을 시도하십시오 (검사의 경우 숫자 또는 문자열 또는 배열 등)

이렇게하면 아무도 앱없이 PHP 파일을 사용할 수 없습니다. 그리고 귀하의 허가 없이는 어떤 데이터도받을 수 없습니다.