防止部分 Tapjacking - Android
Prevent partial Tapjacking - Android
我正在努力提高应用程序的安全性并防止 Tapjacking。为此,我们使用了:
filterTouchesWhenObscured = "true"
看来我们已经设法保护应用程序免受视图被完全覆盖 (FLAG_WINDOW_IS_OBSCURED
) 但尚未部分覆盖 (FLAG_WINDOW_IS_PARTIALLY_OBSCURED
) 的情况).
我真的不知道如何处理最后一种情况,我已经阅读了 here 标志的含义,但我没有找到有关如何解决这种情况的文档。
有人遇到过这个问题或知道如何处理吗?
谢谢
对于那些有同样问题的人,最后我简单地检查了标志FLAG_WINDOW_IS_PARTIALLY_OBSCURED
。为此,我扩展了 RelativeLayout class(您可以使用任何视图 class)并覆盖了方法 onFilterTouchEventForSecurity
:
@Override
public boolean onFilterTouchEventForSecurity(MotionEvent event) {
if (((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) == MotionEvent.FLAG_WINDOW_IS_OBSCURED)
|| (event.getFlags() & MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED) == MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED){
return false;
}
return super.onFilterTouchEventForSecurity(event);
}
标志FLAG_WINDOW_IS_PARTIALLY_OBSCURED
会返回到true
,即使触摸是在部分覆盖区域之外进行的(只要有部分视图被覆盖),所以它非常有用进行安全检查。
不好的地方是它包含在 Api 29 中,因此您必须在您的应用中包含该版本才能使用它。
我正在努力提高应用程序的安全性并防止 Tapjacking。为此,我们使用了:
filterTouchesWhenObscured = "true"
看来我们已经设法保护应用程序免受视图被完全覆盖 (FLAG_WINDOW_IS_OBSCURED
) 但尚未部分覆盖 (FLAG_WINDOW_IS_PARTIALLY_OBSCURED
) 的情况).
我真的不知道如何处理最后一种情况,我已经阅读了 here 标志的含义,但我没有找到有关如何解决这种情况的文档。
有人遇到过这个问题或知道如何处理吗?
谢谢
对于那些有同样问题的人,最后我简单地检查了标志FLAG_WINDOW_IS_PARTIALLY_OBSCURED
。为此,我扩展了 RelativeLayout class(您可以使用任何视图 class)并覆盖了方法 onFilterTouchEventForSecurity
:
@Override
public boolean onFilterTouchEventForSecurity(MotionEvent event) {
if (((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) == MotionEvent.FLAG_WINDOW_IS_OBSCURED)
|| (event.getFlags() & MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED) == MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED){
return false;
}
return super.onFilterTouchEventForSecurity(event);
}
标志FLAG_WINDOW_IS_PARTIALLY_OBSCURED
会返回到true
,即使触摸是在部分覆盖区域之外进行的(只要有部分视图被覆盖),所以它非常有用进行安全检查。
不好的地方是它包含在 Api 29 中,因此您必须在您的应用中包含该版本才能使用它。