android 由于使用Intent传送敏感数据(username password)的安全性考虑
1. android 密码输入框
EditText password;
password.setInputType(0x81);
2.在几个Acitivy 中使用Intent传送数据的安全性考虑
方式一:
Intent intent = new Intent();
intent.putExtra("username", name);
intent.putExtra("password", password);
intent.setAction("edu.com.SendIntent.LoginActivity");
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
安全问题:如果在一个hack app 中也定义了相同名称的action:
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="edu.com.SendIntent.LoginActivity" />
<category android:name="android.intent.category.DEFAULT" />
intent-filter>
activity>
那么在intent-filter过滤时,这些信息也将被hack app拦截到。
两种方式可以防止这个情况发生:
方式一:
不使用setAction()隐式获取intent,而使用setClassName()根据包名和类名显式获取intent
Intent intent = new Intent();
intent.putExtra("username", name);
intent.putExtra("password", password);
intent.setClassName("edu.com.SendIntent", "edu.com.SendIntent.LoginActivity");
startActivity(intent);
方式二:
Intent intent = new Intent(this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Bundle bun = new Bundle();
bun.putString("Username", useredit.getText().toString());
bun.putString("Password", pswedit.getText().toString());
intent.setClass(this, IntentReciever.class);
intent.putExtras(bun);
MainActivity.this.startActivity(intent);
更多相关文章
- Android(安卓)O上获取Adaptive Icon的Bitmap对象
- Android中的HTTP通信
- Android为数据存储提供几种方式
- Android学习——在线查看android源代码的3种方式
- Android实现授权访问网页的方法
- Android(安卓)Glide 4.0 以上设置出GlideApp
- Android(安卓)Service两种启动方式
- 多渠道打包gradle方式(解决类似'360'纯数字渠道名)
- android 打开微信扫一扫