2 votes

Prévenir le tapjacking partiel - Android

Je travaille à améliorer la sécurité d'une application et à prévenir le Tapjacking. Pour cela, nous avons fait appel à :

filterTouchesWhenObscured = "true"

Il semble qu'avec cela nous ayons réussi à protéger l'application contre une situation dans laquelle la vue était complètement couverte ( FLAG_WINDOW_IS_OBSCURED ) mais pas encore celle dans laquelle elle était partiellement couverte ( FLAG_WINDOW_IS_PARTIALLY_OBSCURED ).

Je ne sais vraiment pas comment gérer cette dernière situation, j'ai lu aquí la signification du drapeau mais je ne trouve pas de documentation sur la façon de résoudre la situation.

Quelqu'un a-t-il déjà été confronté à ce problème ou sait-il comment le gérer ?

Merci

2voto

Pour ceux qui ont le même problème finalement j'ai simplement vérifié le drapeau FLAG_WINDOW_IS_PARTIALLY_OBSCURED . Pour ce faire, j'ai étendu la classe RelativeLayout (vous pourriez le faire avec n'importe quelle classe de vue) et j'ai remplacé la méthode 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);
}

Le drapeau FLAG_WINDOW_IS_PARTIALLY_OBSCURED sera renvoyé à true même si le contact est effectué en dehors de la zone partiellement couverte (tant qu'une partie de la vue est couverte), il est donc très utile pour effectuer des contrôles de sécurité.

Le problème, c'est qu'il est inclus dans l'Api 29. Vous devrez donc inclure cette version dans votre application pour pouvoir l'utiliser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X