android 由于使用Intent传送敏感数据(username password)的安全性考虑
2013-12-20 00:49
531 查看
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);
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 使用Intent传递数据之剪切板
- android中使用Intent在activity之间传递数据
- Android开发之使用Intent进行自定义类型数据传输
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- android 使用Intent传递数据之剪切板
- android中使用两个intent使数据在两个Activity中传递
- android中使用intent来实现Activity带数据跳转
- Android 一一 使用Intent传递数据
- android中使用Intent在activity之间传递数据
- Android AppWidget 开发中PendingIntent传送数据丢失解决办法
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- android 使用Intent传递数据之返回结果
- Android开发之使用Intent在Activity之间传递数据
- 第三节--通过Intent实现Activity的数据传送及Meun的创建和使用
- Android学习备忘011——使用Intent传递数据之返回结果
- Android 使用Intent和Bundle传递数据及如何传递enum
- Android Activity传递数据使用getIntent()接收不到,揭秘Intent传递数据与Activity启动模式singleTask的关系。
- Android 使用Intent实现Activity跳转和数据传递
- 关于Android 6.0及以上版本用PendingIntent传送数据丢失问题
- Android 多个 AppWidget PendingIntent 传送数据丢失解决办法