Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在我的android代码中保护url?_Android_Security - Fatal编程技术网

如何在我的android代码中保护url?

如何在我的android代码中保护url?,android,security,Android,Security,我在android上做了一个应用程序。我在服务器上使用一些url请求,但我不知道如何在应用程序中保护或隐藏这些url。 有人能帮我吗?您可以尝试混淆字符串资源(使用Progaurd),但无论您将投入多少努力来确保资源(如URL)的安全,总有一种方法可以从应用程序中反编译和检索硬编码数据。与其依赖于在应用程序中保护URL,请尝试保护您的服务器,以便只有通过授权用户才能访问它。 如果你仍然想让攻击者的生活变得困难,你可以研究一下 请记住:通过采用这种方法(您正在询问),您可以增加攻击者侵入您的资源

我在android上做了一个应用程序。我在服务器上使用一些url请求,但我不知道如何在应用程序中保护或隐藏这些url。
有人能帮我吗?

您可以尝试混淆字符串资源(使用Progaurd),但无论您将投入多少努力来确保资源(如URL)的安全,总有一种方法可以从应用程序中反编译和检索硬编码数据。与其依赖于在应用程序中保护URL,请尝试保护您的服务器,以便只有通过授权用户才能访问它。 如果你仍然想让攻击者的生活变得困难,你可以研究一下

  • 请记住:通过采用这种方法(您正在询问),您可以增加攻击者侵入您的资源的时间跨度,从而使攻击者的生活更加艰难。但您的应用程序仍然容易被破解

.apk
很容易反编译()


我也做过类似的事情。你要做的是

1) 您应该有一个Web服务,它将为您提供服务的URL

2) 加密主webservice URL并在代码中隐藏密钥

3) 用户proguard会混淆代码

4) 加载应用程序时,点击主URL并获取其他URL

5) 获取解密密钥,就像您将把URL保存在内存中一样,任何人都可以在内存转储的情况下访问该URL

6) 在需要时解密URL

其他选择是

private final static String ALGORITM=“Blowfish”;
专用最终静态字符串键=“2356A3A42BA5781F80A72AD3F90AEEE8BA93C7637AAF218A8B8C18C”;
私有最终静态字符串PLAIN_TEXT=“这是您的文本”;
公开作废运行(视图五){
试一试{
字节[]加密=加密(密钥,纯文本);
Log.i(“FOO”,“加密:”+bytesToHex(加密));
字符串解密=解密(密钥,加密);
Log.i(“FOO”,“解密:”+解密);
}捕获(一般安全性例外e){
e、 printStackTrace();
}
}
私有字节[]加密(字符串密钥、字符串明文)引发GeneralSecurityException{
SecretKey secret\u key=新的SecretKeySpec(key.getBytes(),ALGORITM);
Cipher Cipher=Cipher.getInstance(ALGORITM);
cipher.init(cipher.ENCRYPT_模式,secret_密钥);
返回cipher.doFinal(明文.getBytes());
}
私有字符串解密(字符串密钥,字节[]encryptedText)引发GeneralSecurityException{
SecretKey secret\u key=新的SecretKeySpec(key.getBytes(),ALGORITM);
Cipher Cipher=Cipher.getInstance(ALGORITM);
cipher.init(cipher.DECRYPT_模式,secret_密钥);
字节[]已解密=cipher.doFinal(encryptedText);
返回新字符串(已解密);
}
公共静态字符串bytesToHex(字节[]数据){
如果(数据==null)
返回null;
字符串str=“”;
对于(int i=0;i

我是这样用的。我开始使用AES算法加密URL,并为AES设置密钥以获得URL的字节数组

byte[] b = {-52, -42, -105, 86, 110, -111, -59, 126, 97, -70, 12, 67, -121, 75, -97, 76, 82, -29, -25, -87, 77, 21, 19, 73, 45, -28, -20, -61, 34, 121, -27, -22, -25, 34, 2, -80, 48, -118, -109, -63, -26, 72, -42, -79, -75, -82, -52, -6, 118, 25, 48, 48, 47, -54, -42, -13, -83, 37, 118, -100, -1, -38, 127, 8, 22, -124, -25, -33, -18, -2, -31, -55, -25, 2, -46, 19, 36, -2, 76, 100};
我将URL转换为字节数组,并且只在应用程序中保存字节数组。需要时,我使用AES算法和AES键将字节数组转换为URL。

在环境变量、BuildConfig和Android Studio中隐藏URL

@AZ_uu您好,我在对应用程序进行反向工程时遇到了一个问题,即我应该如何管理我的url,以便在反编译后不获取服务url。请帮助我如何保护我的应用程序。
byte[] b = {-52, -42, -105, 86, 110, -111, -59, 126, 97, -70, 12, 67, -121, 75, -97, 76, 82, -29, -25, -87, 77, 21, 19, 73, 45, -28, -20, -61, 34, 121, -27, -22, -25, 34, 2, -80, 48, -118, -109, -63, -26, 72, -42, -79, -75, -82, -52, -6, 118, 25, 48, 48, 47, -54, -42, -13, -83, 37, 118, -100, -1, -38, 127, 8, 22, -124, -25, -33, -18, -2, -31, -55, -25, 2, -46, 19, 36, -2, 76, 100};