android
  • ios
  • cordova
  • encryption
  • get
  • 2014-09-09 1 views 1 likes 
    1

    저는 Cordova 기반의 모바일 앱을 만들었습니다. iOS와 Android 모두에서 앱과 서버 간의 보안 통신을 만들어야합니다. 서버에 요청, 자바 스크립트, 다음과 같이 있습니다 :Cordova 기반 모바일 앱과 웹 서버 간의 통신 중 프라이버시를 보장하는 가장 좋은 방법은 무엇입니까?

    request.open("GET", 'http://url/service?firstElement='+elem+'&secondElement='+elem2, false); 
    

    나는 로컬 공개 키와 개인 키를 생성 pidCrypt 라이브러리를 사용하여 RSA 암호화를 사용하려고했습니다는 2048bits 키를 생성 할 데 시간이 너무 오래 시간이 필요합니다, 그래서 내가 ' 512 비트를 사용했습니다. 서버가 메시지의 암호를 해독 할 수 없습니다.

    더 나은 솔루션을 찾고 있습니다.

    +0

    간단한 해결책은'https' (SSL)를 사용하는 것입니다. RSA 암호화는 일반적으로 데이터가 아닌 키를 암호화하는 데 사용됩니다. 데이터 암호화의 경우 현재 가장 좋은 방법은 AES입니다. – zaph

    답변

    0

    Send Ajax Request, Like this를 사용해보세요. PHP 동적 코드 (서버 쪽) 사용한다고 가정합니다.

    다음은 코드바, phonegap 디렉토리에있는 HTML 파일의 샘플입니다.

    <form method = "post" action = "#!"> 
         <div class="col-md-4"> 
          <span class="help-block">Name</span><input type="text" name="username" class="form-control" /> 
         </div> 
         <br> 
         <div class="col-md-4"> 
          <span class="help-block">Password</span><input type="text" name="password" class="form-control" /> 
         </div> 
         <input type = "submit" value = "Save" class = "btn btn-success right" onClick="UpdateRecord();"/> 
        </form> 
    
        <script> 
        function UpdateRecord() 
         { 
          var name = $("[name='username']").val(); 
          var host = $("[name='password']").val(); 
          jQuery.ajax({ 
          type: "POST", 
          url: "php/login.php", 
          /* Or */ 
          /*url: "https://www.yoursite.com/page",*/ 
          data: "username="+ username+"& password="+ password, 
          dataType: "html", 
          cache: false, 
          success: function(response){ 
           if(response == 'true') { 
            $.session.set("myVar", username); 
            window.location.href='profile.html'; 
           } 
           else { 
            $("#errorMessage").html("Invalid Entry, Please Try Again"); 
           } 
          } 
         }); 
        } 
        </script> 
    

    및 처리 쿼리 용 PHP 파일.

    코드가 테스트되지 않았으므로 필요에 따라 변경 될 수 있습니다. 모든 암호화 방법을 수행하고 여기에서 모든 기능을 사용할 수 있습니다. 민감한 데이터를 전송하는 동안

    <?php 
         include 'config.php'; 
         $username = mysql_real_escape_string($_POST['username']); 
         $password = mysql_real_escape_string($_POST['password']); 
    
         if(!empty($username) && !empty($password)) 
         { 
           //$result = mysql_query("SELECT * FROM ".$db.".users WHERE username='$username' and password ='$password'"); 
           $result=mysql_query("select * from ".$db.".users WHERE email = '$username' "); 
           while($data = mysql_fetch_row($result)) 
           { 
            $original_password = $data[3]; 
            $salt = $data[4]; 
            $hashedPass = sha1($salt.$password); 
            $fullusername = $data[16]." ".$data[17]; // Used Only for create full name session 
            if ($original_password == $hashedPass) 
            { 
             $_SESSION['username'] = $fullusername; 
             $_SESSION['useremail'] = $username; 
             $_SESSION['UserID'] = $data[0]; 
             echo 'true'; 
            } 
           } 
    
          } 
        ?> 
    

    편집

    request.open("GET", 'http://url/service?firstElement='+elem+'&secondElement='+elem2, false); 
    

    피가 GET 방식을 사용합니다.

    편집, 유용한 링크

    Local storage protection in phonegap application

    +0

    POST로 데이터를 전송하는 것만으로 보안이 제공되지 않고 단지보기가 힘들어집니다. – zaph

    +0

    @Zaph 예 알아요,하지만이 방법은 데이터를 PHP 페이지에 게시 한 다음 원하는 방법으로 암호화 한 후 사용하는 것으로 생각합니다. HTML에서 데이터를 암호화하는 방법을 알고 있다면 게시하십시오. 그것은 많은 사람들을 돕는다. 그리고 우리는 jquery를 사용하여 데이터를 암호화하고 PHP로 전송한다고 생각합니다. 맞습니까? –

    +0

    내가 논평 한 것처럼 간단한 해결책은'https' (SSL)을 사용하는 것이다. – zaph

    관련 문제