View的filterTouchesWhenObscured属性

android:filterTouchesWhenObscured="true" 是 Android 系统中的一个安全特性,用于防止应用界面被 恶意覆盖(Overlay Attack) 时用户误触敏感操作。在您的代码中,这个属性被设置在 退出登录按钮 上,主要出于以下安全考虑:

一、属性的作用

filterTouchesWhenObscured="true" 时:

  • 如果按钮被 其他窗口(如悬浮窗、输入法)部分或完全遮挡 ,系统会 过滤掉触摸事件(用户点击按钮无效)。
  • 这确保用户的操作仅针对 可见的 UI 元素,避免被隐藏在下方的恶意界面 "劫持"。

二、为何在退出登录按钮上使用?

退出登录是一个 敏感操作(涉及用户账户安全),攻击者可能通过以下方式利用:

  1. 恶意悬浮窗覆盖

    • 攻击者通过诱导用户安装恶意应用(如伪装成系统更新),获取 悬浮窗权限
    • 当用户打开您的应用并点击退出按钮时,恶意悬浮窗在按钮上方显示一个 伪造的 "确认弹窗" ,用户点击 "确认" 时,实际触发的是下方真实按钮的退出逻辑。
  2. 输入法覆盖攻击

    • 攻击者利用输入法漏洞,在用户输入密码时,输入法界面覆盖退出按钮,诱导用户误触。

三、安全增强的场景

这个属性在以下场景尤为重要:

  • 金融类应用:转账、支付按钮必须防止被覆盖;
  • 敏感操作:如退出登录、删除账户、修改密码等;
  • 需要用户明确意图的场景:如 "清除所有数据" 的确认按钮。

四、与其他安全措施的配合

  1. 权限管控

    应用应避免不必要的 悬浮窗权限(SYSTEM_ALERT_WINDOW) ,减少被覆盖的风险。

  2. 双重验证

    对于敏感操作,结合二次确认(如弹窗、指纹验证),进一步增强安全性。

  3. 检查窗口层级

    代码中可通过 View.getGlobalVisibleRect() 检测按钮是否被遮挡:

    java

    scss 复制代码
    Rect rect = new Rect();
    logoutButton.getGlobalVisibleRect(rect);
    if (rect.width() < logoutButton.getWidth() || rect.height() < logoutButton.getHeight()) {
        // 按钮被部分遮挡,禁止操作
        logoutButton.setEnabled(false);
    }

五、兼容性与注意事项

  • Android 6.0+ :该属性从 API 23 开始支持,低版本系统可能无效。
  • 视觉反馈:按钮被遮挡时应提供明确提示(如置灰、Toast 提示),避免用户困惑。

总结

在退出登录按钮上设置 filterTouchesWhenObscured="true" 是一种 防御性编程,通过系统机制防止恶意覆盖攻击,保护用户账户安全。这是一个低成本(仅需一行代码)、高收益的安全增强措施,建议在所有敏感操作按钮上使用。

相关推荐
2501_9160088932 分钟前
iOS 抓包工具有哪些?全面盘点主流工具与功能对比分析
android·ios·小程序·https·uni-app·iphone·webview
2501_9159214336 分钟前
iOS混淆工具实战 视频流媒体类 App 的版权与播放安全保护
android·ios·小程序·https·uni-app·iphone·webview
CYRUS_STUDIO1 小时前
LLVM 全面解析:NDK 为什么离不开它?如何亲手编译调试 clang
android·编译器·llvm
CYRUS_STUDIO1 小时前
静态分析神器 + 动态调试利器:IDA Pro × Frida 混合调试实战
android·逆向
g_i_a_o_giao4 小时前
Android8 binder源码学习分析笔记(一)
android·java·笔记·学习·binder·安卓源码分析
翻滚丷大头鱼4 小时前
android 四大组件—BroadcastReceiver
android
人生游戏牛马NPC1号4 小时前
学习 Android (二十) 学习 OpenCV (五)
android·opencv·学习
2501_916008894 小时前
uni-app iOS 日志与崩溃分析全流程 多工具协作的实战指南
android·ios·小程序·https·uni-app·iphone·webview
文 丰4 小时前
【AndroidStudio】官网下载免安装版,AndroidStudio压缩版的配置和使用
android
WillWolf_Wang4 小时前
Linux 编译 Android 版 QGroundControl 软件并运行到手机上
android·linux·智能手机