2016-11-11 11 views
1

が、私は私のアプリでVolleyライブラリを使用し、すべてがOKですが、私がリクエストを送信するとき、私は私のサーバーのパラメータのアンドロイドボレーのパラメータのURLまたは値を隠す方法はありますか?

  • 名を以下の

    • 完全なURLを参照することができ

    • とその他の値。

    また、Kali linuxのEttercapツールで確認しても同じです。私の質問は、これをユーザーから隠す方法です。

    String url ="http://*******.com/login"; 
    
    
        StringRequest strReq = new StringRequest(Request.Method.POST, 
          url, new Response.Listener<String>() { 
    
         @Override 
         public void onResponse(String response) { 
          Log.d(TAG, "Login Response: " + response.toString()); 
          hideDialog(); 
    
          try { 
           JSONObject jObj = new JSONObject(response); 
           boolean error = jObj.getBoolean("error"); 
    
           // Check for error node in json 
           if (!error) { 
            // user successfully logged in 
            // Create login session 
    
            // Now store the user in SQLite 
            String name = jObj.getString("name");    
            String email = jObj.getString("email"); 
            String api = jObj.getString("apikey"); 
    
    
           } else { 
            // Error in login. Get the error message 
            String errorMsg = jObj.getString("message"); 
            Toast.makeText(getApplicationContext(), 
              errorMsg, Toast.LENGTH_LONG).show(); 
           } 
          } catch (JSONException e) { 
           // JSON error 
           e.printStackTrace(); 
           Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show(); 
          } 
    
         } 
        }, new Response.ErrorListener() { 
    
         @Override 
         public void onErrorResponse(VolleyError error) { 
          Log.e(TAG, "Login Error: " + error.getMessage()); 
          Toast.makeText(getApplicationContext(), 
            error.getMessage(), Toast.LENGTH_LONG).show(); 
          hideDialog(); 
         } 
        }) { 
    
         @Override 
         protected Map<String, String> getParams() { 
          // Posting parameters to login url 
          Map<String, String> params = new HashMap<String, String>(); 
          params.put("email", email); 
          params.put("password", password); 
    
          return params; 
         } 
    
    
        }; 
    
        // Adding request to request queue 
        MyApplication.getInstance().addToRequestQueue(strReq, tag_string_req); 
    } 
    

    これは私のデバッガとKali linuxのEttercapの結果です。これは、ヘッダの値を追加するための適切な場所であるため、使用getHeaders()ではなくgetParams()

    1:私は、問題を再現することができていますので、

    Email: [email protected] Pass:somthing INFO:http://****/mypath/login CONTENT:[email protected]&password=somthing& 
    
  • +0

    証明書のピン割り当てでSSLを使用します。 – CommonsWare

    +0

    これをどのユーザーから隠すか?ユーザーは本当に 'ettercap'を持っていますか? – EJP

    +0

    ヘッダーまたは本文にURLを追加する際にパスワードを入力しないでください。人々はそれをまだ見ることができますが、Commonswareが提案するようにSSLを使用する必要があります。 – Enzokie

    答えて

    -1

    私はここで2つの可能な答えを考えています。以下のサンプルをチェックしてください。

    @Override 
        public Map<String, String> getHeaders() throws AuthFailureError { 
         Map<String, String> params = new HashMap<String, String>(); 
         params.put("email", email); 
         params.put("password", password); 
    
         return params; 
        } 
    

    注:getHeaders()publicです。

    2:StringRequestではなくJsonObjectRequestを使用します。なぜですか?私はあなたがヘッダー値ではなくボディ値を期待していると推測しています。

    JSONObject requestBody = new JSONObject(); 
          requestBody.put("email", email); 
          requestBody.put("password", password); 
    
    JsonObjectRequest strReq = new JsonObjectRequest(Request.Method.POST, 
          url,requestBody, new Response.Listener<JSONObject>() { 
    
        ... More code here 
    
    } ... 
    
    関連する問題