Ano*_*oop -1 security encryption post android web-services
我有一个带有网络服务网址的android应用。如果有人解密我的apk文件,则Web服务URL将变为可见。我正在使用HTTP POST调用Web服务。
任何人都可以通过反编译来自此站点的apk文件来读取代码。
我的注册页面网址遭到黑客入侵,并向其中发送包含发布数据的大量请求。我正在使用,API_KEY并发送API_KEY与数据。API_KEY已存储在gradle.properties文件中。
我没用过
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'` when its got hacked.
Run Code Online (Sandbox Code Playgroud)
经过一番搜索,我知道没有100%安全的方法可以隐藏url。
我的注册代码是:
String link = "http://xxxxxxxxxx.php";
String data = URLEncoder.encode("name", "UTF-8") + "=" + URLEncoder.encode(name, "UTF-8");
data += "&" + URLEncoder.encode("phone", "UTF-8") + "=" + URLEncoder.encode(phone, "UTF-8");
data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
URL url = new URL(link);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
Run Code Online (Sandbox Code Playgroud)
我不知道将数据发布到网址是否正确。
如何保护我的源代码?
我可以将所有Web服务URL存储在服务器中吗?
我是android的初学者。请帮忙!
我在我开发的所有android应用程序中都使用了它
gradle.properties
API = http://ec2xxxxx.compute.amazonaws.com
API_KEY = $2c11SoL/NjJ28
Run Code Online (Sandbox Code Playgroud)
创建 utils.gradle
utils.gradle
class Utils {
static def r = new Random(System.currentTimeMillis())
}
def String toJavaCodeString(String string) {
byte[] b = string.getBytes();
int c = b.length;
StringBuilder sb = new StringBuilder();
sb.append("(new Object() {");
sb.append("int t;");
sb.append("public String toString() {");
sb.append("byte[] buf = new byte[");
sb.append(c);
sb.append("];");
for (int i = 0; i < c; ++i) {
int t = Utils.r.nextInt();
int f = Utils.r.nextInt(24) + 1;
t = (t & ~(0xff << f)) | (b[i] << f);
sb.append("t = ");
sb.append(t);
sb.append(";");
sb.append("buf[");
sb.append(i);
sb.append("] = (byte) (t >>> ");
sb.append(f);
sb.append(");");
}
sb.append("return new String(buf);");
sb.append("}}.toString())");
return sb.toString();}
ext.toJavaCodeString = this.&toJavaCodeString
Run Code Online (Sandbox Code Playgroud)
build.gradle
apply from: "utils.gradle"
android {
defaultConfig {
buildConfigField 'String', 'API', toJavaCodeString(API)
buildConfigField 'String', 'API_KEY', toJavaCodeString(API_KEY)
}}
Run Code Online (Sandbox Code Playgroud)
并访问您的私人网址;
public static final String API = BuildConfig.API;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1780 次 |
| 最近记录: |