我特别担心与第三方键盘(例如 LokiBoard 键盘)相关的潜在安全风险,它可能会保存在 EditText 中输入的击键并危及用户数据。
我想确保用户在与我的应用程序的敏感部分交互时无法使用第三方键盘。如何限制或阻止第三方键盘以防止其捕获敏感输入数据?
1.是否可以限制或禁用 Android 应用程序中特定活动或视图的第三方键盘?
2.是否有任何最佳实践或API可以防止第三方键盘捕获敏感区域的输入?
3.您能否建议任何其他策略或安全措施来保护用户输入免受第三方键盘潜在的键盘记录?
好的,这里有几件事:
不存在第三方键盘之类的东西,因为不存在第一方键盘之类的东西。 没有“默认 Android 键盘”。 Google 编写了一款名为 latinIME 的键盘应用程序,它经常与 Android 捆绑在一起,但它与任何其他键盘应用程序没有什么不同。 并不是所有手机都有这个功能。 特别是没有拉丁键盘的地区的手机通常不会发货。
由于不存在第一方或第三方键盘之类的东西,因此无法阻止某人使用他们想要使用的任何键盘,除非您正在谈论您拥有的硬件并且可以控制其上安装的内容。 如果用户希望下载键盘应用程序,您无法阻止它,无法知道他们是否这样做了,并且没有 API 可以找出正在使用的键盘。
我的建议是不要担心。 虽然键盘是安装键盘记录器的好方法,但它也不是唯一的方法,而且很少有人下载备用键盘。 与键盘相比,我更担心游戏商店中的随机恶意软件。
下面的代码适用于大多数设备。尚未与不同手机制造商进行测试
public boolean isUsingCustomInputMethod() {
InputMethodManager imm = (InputMethodManager) ctx.getSystemService(
Context.INPUT_METHOD_SERVICE);
List<InputMethodInfo> mInputMethodProperties =
imm.getEnabledInputMethodList();
final int N = mInputMethodProperties.size();
for (int i = 0; i < N; i++) {
InputMethodInfo imi = mInputMethodProperties.get(i);
if (imi.getId().equals(
Settings.Secure.getString(ctx.getContentResolver(),
Settings.Secure.DEFAULT_INPUT_METHOD))) {
if ((imi.getServiceInfo().applicationInfo.flags &
ApplicationInfo.FLAG_SYSTEM) == 0) {
return true;
}
}
}
return false;
}