Android如何在源代码中隐藏或保护URL链接

5
我在我的应用程序中使用URL链接来从服务器发送和接收数据。如果有人反编译我的APK文件并获得源代码,可以使用URL链接发送垃圾邮件或不付款购买商品!
现在我该如何保护URL链接?
这是我使用的向服务器发送请求的示例(仍然在使用本地服务器,直到完成应用程序)。
public class GetProduct {

    ArrayList<Product> arrayList;
    ProgressDialog progressDialog;
    String url = "http://192.168.43.46/fasabazar/android/getProductsFullInfo";
    OnProductRecieved onProductRecieved = null;

    public GetProduct(final OnProductRecieved onProductRecieved, final Context context) {
        arrayList = new ArrayList<>();
        progressDialog = new ProgressDialog(context);
        this.onProductRecieved = onProductRecieved;
        JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {

                JSONArray jsonArray = (JSONArray) response;
                progressDialog.dismiss();
                onProductRecieved.OnRecieved(response);
                // Toast.makeText(context, jsonArray.toString(), Toast.LENGTH_SHORT).show();

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });

        progressDialog.show();
        request.setRetryPolicy(new DefaultRetryPolicy(7000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        RequestQueue requestQueue = Volley.newRequestQueue(context);
        requestQueue.add(request);
    }

    public interface OnProductRecieved {
        void OnRecieved(JSONArray response);
    }
}
1个回答

2
您无法可靠地保护那些URL链接。您可以混淆代码,但是有工具可以反向混淆。

如果有人想反编译和去混淆您的代码,那是因为他们认为您必须有某些有价值的东西要追求。在这种情况下,您的安全方法是错误的;不仅您的应用,而且您的服务器或Web服务也容易受到攻击。

  1. 您的代码没有使用HTTPS,所以简单地“嗅探”网络流量将显示URL。 “嗅探器”还可查看响应数据。
  2. 您应该使用HTTPS,这意味着修改服务器配置并获得站点证书。但这并不能解决您的代码可以轻松检查URL的事实。 HTTPS只会加密正在交换的数据,而不是用于建立连接的URL,因此一旦知道了URL,它们仍然可以在HTTPS网站上使用,用户仍然可以在没有应用程序的情况下获取数据。
  3. 大多数需要付费的网站都使用某种安全的支付软件包(电子商务)或用户登录(订阅服务)。 您应该在线搜索付款软件包,并重新设计更安全的Web服务。

如果这不是您想听到的,请原谅。


非常感谢。你能回答我的两个问题吗?1.在这种情况下我应该怎么做?2.连接服务器并获取数据的最安全方式是什么?如果你能给我一些链接就太好了。 - john

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接