我有一个带有php web服务的android应用程序。Web服务URL存储在应用程序本身中。我的应用程序中有一个注册页面,可以将数据发布到注册url。
我的注册代码是:
`String link = "http://xxxxxxx.registration.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();`
在我将apk发布到playstore中后,有人对apk文件进行了逆向工程,并将带有post数据的批量请求发送到我的注册url。
在这次攻击的时候我还没有使用Proguard。
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro
我试图通过将其保存在grade.properties文件中来保护Url,并通过引用BuildConfig.Registration_Url来调用它。但不知怎么的,他们又找到了网址。
经过一番搜索,我知道没有任何方法可以100%地向攻击者隐藏URL
- 我想知道什么是保护代码免受攻击者攻击的正确方法
- 如何验证web服务请求是否来自应用程序(如果调用不是来自应用程序,则应重定向到错误页面)
- 我可以在服务器端保留所有的web服务url吗
我是编程初学者。请帮忙!
使用$_SERVER['HTTP_USER_AGENT']
中的用户代理,为了进行简单的检测,您可以使用以下脚本:
<?php
//Detect special conditions devices
$iPod = stripos($_SERVER['HTTP_USER_AGENT'],"iPod");
$iPhone = stripos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$iPad = stripos($_SERVER['HTTP_USER_AGENT'],"iPad");
$Android = stripos($_SERVER['HTTP_USER_AGENT'],"Android");
$webOS = stripos($_SERVER['HTTP_USER_AGENT'],"webOS");
//do something with this information
if( $iPod || $iPhone ){
//browser reported as an iPhone/iPod touch -- do something here
}else if($iPad){
//browser reported as an iPad -- do something here
}else if($Android){
//browser reported as an Android device -- do something here
}else if($webOS){
//browser reported as a webOS device -- do something here
}
?>
如果您想了解用户设备的更多详细信息,我建议您使用以下解决方案之一:http://51degrees.mobi或http://deviceatlas.com