Android Nougat (7.1+) ima način rada za otkrivanje panike koji detektira da li korisnik mahnito pritišće tipku za povratak. Pročitajte više da biste čuli što radi.
Iako je manje vjerojatno da će mnogi čitatelji web stranica usmjerenih na Android poput naše naići situacijama u kojima lažna aplikacija kompromitira njihov sustav, isto ne mora vrijediti za općenito populacija. Gotovo svaki tjedan čujemo od raznih sigurnosnih istraživača o novom zlonamjernom softveru koji cilja korisnike Androida. Većina ovih zlonamjernih napada može se izbjeći provjerom dopuštenja ili izbjegavanjem instaliranja aplikacija koje izgledaju nejasno, i Iako preporučamo našim čitateljima da uzmu sigurnost svog telefona u svoje ruke, Google je odgovoran za osiguranje svakog Androida telefon. U tu je svrhu tvrtka tiho predstavila novu sigurnosnu značajku u Androidu 7.1 Nougat pod nazivom "otkrivanje panike" koji osluškuje višestruke uzastopne pritiske gumba za povratak i zatim vraća korisnika na početni zaslon.
Vrlo jednostavno, ako lažna aplikacija pokuša oteti korisnikov zaslon i spriječiti korisnika da ode (možda putem implementiranje usluge pristupačnosti za presretanje svih ključnih događaja), Android će sam nadjačati aplikaciju kako bi vratio početni zaslon. Korisnik tada vjerojatno može deinstalirati zlonamjernu aplikaciju iz pokretača.
Ova je značajka prošla ispod radara, što je razumljivo jer Google vjerojatno ne bi želio oglašavati se svijetu na način na koji uništava zlonamjerne aplikacije. Ali brzi pogled na Androidov otvoreni izvorni kod otkriva kako ova jednostavna značajka radi na uređajima koji je podržavaju.
Ispitivanje Kodeksa
Prije svega, samo zato što vaš uređaj koristi Android 7.1+ ne znači da je ovo ponašanje otkrivanja panike zapravo omogućeno. Vrijednost koja određuje je li značajka uključena može se pronaći u config.xml
datoteku unutar SystemUI APK-a.
<integername="config_backPanicBehavior">0integer>
Prema zadanim postavkama, Androidova reakcija na panične pritiske gumba za povratak je da ne učini ništa. Ako je cjelobrojna vrijednost od config_backPanicBehavior
je postavljeno na 1, međutim, tu stupa na snagu nova Androidova mjera zaštite.
Unutar PhoneWindowManager.java
možemo vidjeti većinu načina na koji je ova značajka implementirana. Prije svega, datoteka definira dvije stvari: koliko pritisaka na tipku za povratak je potrebno da bi sustav utvrdio da je korisnik "u panici" i zatim koju radnju poduzeti na temelju tog stanja.
// Number of presses needed before we induce panic press behavior on the back button
staticfinalint PANIC_PRESS_BACK_COUNT = 4;
staticfinalint PANIC_PRESS_BACK_NOTHING = 0;
staticfinalint PANIC_PRESS_BACK_HOME = 1;
Prema zadanim postavkama, sustav zahtijeva 4 uzastopna pritiska tipke za povratak kako bi ušao u način rada za paniku. Bez obzira na to koristi li funkcija cjelobrojnu vrijednost PANIC_PRESS_BACK_NOTHING
ili PANIC_PRESS_BACK_HOME
određuje vrijednost u konfiguracijskoj datoteci unutar SystemUI APK-a.
Bez obzira na ovu vrijednost, svaki višestruki pritisak tipke za povratak provjerava se da li će se računati kao pritisak u panici. Prvo, sustav presreće pritisak prema dolje za KEYCODE_BACK događaj tipke i provjerava je li sustav postavljen da provjerava višestruke ili duge pritiske tipke. Zatim sustav provjerava treba li korisničkoj aplikaciji proslijediti pritisak gore za isti događaj tipke KEYCODE_BACK.
u interceptBackKeyDown()
metoda, ako je brojač pritiska na tipku za povratak između 1 i 3, tada sustav preskače vremensko ograničenje detekcije višestrukog pritiska jer detekcija panike zahtijeva najmanje 4 pritiska da bi se poduzela bilo kakva radnja.
Zatim, kada korisnik makne prst s tipke za povratak, što pokreće događaj gore, interceptBackKeyUp
dodaje 1 brojaču stražnjih tipki. Zatim stavlja poruku u red za 300 milisekundi u budućnosti. Razlog tome je taj što sustav rezervira razdoblje odgode od 300 milisekundi kada odlučuje jesu li pritisci gumba za povratak dio događaja višestrukog pritiska. Ako jest, korisnik možda panično pritišće gumb tako da sustav ne bi trebao slati ključni događaj korisničkoj aplikaciji.
Vrijednost vremenskog ograničenja višestrukog pritiska od 300 ms pohranjuje se u sigurnoj postavci "multi_press_timeout
" kako je prikazano dolje.
/**
* The duration in milliseconds between the first tap's up event and the second tap's
* down event for an interaction to be considered part of the same multi-press.
* @hide
*/
publicstaticfinal String MULTI_PRESS_TIMEOUT = "multi_press_timeout";
Prema zadanim postavkama, ova je vrijednost postavljena na 300 ms.
/**
* Defines the default duration in milliseconds between the first tap's up event and the second
* tap's down event for an interaction to be considered part of the same multi-press.
*/
privatestaticfinalint DEFAULT_MULTI_PRESS_TIMEOUT = 300
Zatim, ako se doista otkrije višestruki pritisak (>1 tipka za povratak dovrši pritisak gore/dolje unutar 300 ms), sustav poziva backMultiPressAction
metoda za određivanje radnji koje treba poduzeti. Konačno, brojač gumba za povratak vraća se na 0.
Iako je to vrlo mala značajka koja nije objavljena, ipak je lijepo vidjeti na čemu Google radi iza kulisa kako bi Android učinio sigurnijim za prosječnog korisnika.