Android mengabaikan ketukan persetujuan VPN? Periksa overlay lebih dulu
Tombol persetujuan yang tidak menerima ketukan biasanya hambatan lokal di layar, bukan kerusakan server atau akun. Hapus overlay dan pertahankan perlindungan.
Anda mengetuk tombol persetujuan VPN dan dialog tidak bereaksi. Kesimpulan alaminya adalah aplikasi atau server rusak, jadi orang mereset kata sandi, mengganti DNS, atau memasang ulang klien. Biasanya tidak ada yang menyentuh penyebabnya, karena Android membuang ketukan yang datang melewati penghalang, dan layar persetujuan VPN persis jenis dialog persetujuan sensitif itu. Ketukan tidak pernah mencapai tombol.
Apa yang sebenarnya ditolak perlindungan
Android melindungi interaksi sensitif dari tapjacking, saat jendela lain duduk di atas dialog dan mencuri ketukan atau membuatnya ambigu. Sebuah tampilan ikut serta dengan View.setFilterTouchesWhenObscured, dan peristiwa datang dengan MotionEvent.FLAG_WINDOW_IS_OBSCURED ketika jendela lain ditandai sebagai penghalang sebagian atau penuh. Peristiwa itu lalu dibuang alih-alih dikirim ke tempat yang salah. Android 12 (API 31) memperluas perlindungan yang sama dengan memblokir ketukan tak tepercaya di permukaan persetujuan sistem, karena itu dialog persetujuan bisa menolak ketukan dari overlay yang masih akan diterima aplikasi lain.
Tiga hal rutin menimbulkan penghalang: aplikasi yang memegang izin tampil di atas aplikasi lain, layanan aksesibilitas yang menggambar konten, dan widget mengambang dari perekam layar atau alat filter. Beberapa fitur layar pabrikan menambahkan lapisannya sendiri, karena itu dialog yang sama bisa berperilaku berbeda pada dua ponsel dengan versi Android yang sama. Jendela yang menghalangi sebagian menyetel FLAG_WINDOW_IS_PARTIALLY_OBSCURED, dan ketukan dibuang sebelum tombol sempat melihatnya. Ini sifat layar, bukan jaringan. Tidak ada yang dikirim ke server VPN saat ketukan dibuang, jadi tidak ada perubahan di sisi server yang bisa memengaruhi hasil.
Pisahkan ketukan mati dari koneksi gagal
Perbedaannya adalah seluruh diagnosis dan hanya butuh sepuluh detik. Jika ketukan diabaikan dan dialog tetap persis seperti semula, hambatannya lokal. Jika dialog tertutup dan sesudahnya muncul galat, persetujuan diterima dan Anda sudah masuk tahap lain yang membutuhkan informasi peristiwa dari aplikasi itu sendiri.
Anda bisa memastikan bacaan lokal dengan memeriksa apakah aplikasi peminta sempat mencoba koneksi. Klien yang tidak pernah mencatat upaya handshake saat dialog persetujuan di layar belum mencapai jaringan.
adb shell cmd appops get com.example.vpn SYSTEM_ALERT_WINDOW
adb shell settings get secure enabled_accessibility_servicesDaftar siapa yang memegang izin overlay dan layanan aksesibilitas mana yang aktif, lalu cocokkan dengan yang sedang berjalan. Jangan matikan perlindungan platform itu sendiri; itulah yang mencegah jendela tersembunyi menjawab dialog persetujuan atas nama Anda.
Hapus penghalang, lalu coba alur normal lagi
Kenali dulu aplikasi mana yang meminta persetujuan VPN, supaya Anda tahu persetujuan apa yang diberikan. Lalu hentikan overlay tertentu lewat pengaturannya sendiri, bukan dengan mencabut izin luas yang mungkin Anda butuhkan nanti. Filter layar biasanya punya tombol di aplikasinya; widget mengambang punya kontrol tutup; mode layar pabrikan punya sakelar di pengaturan layar.
Setelah itu kembali ke aplikasi VPN dan minta persetujuan lagi, agar dialog dibuat ulang. Jika ketukan sekarang bekerja, sesuaikan perilaku kompatibilitas overlay atau biarkan mati saat Anda terhubung, dan pertahankan perlindungan sentuhan.
Jika Anda tidak tahu jendela mana yang bertanggung jawab, lepaskan satu per satu dan coba dialog persetujuan setelah setiap perubahan. Bilah kontrol perekam atau pintasan mengambang adalah pelaku biasa, dan yang Anda lepas tepat sebelum berhasil adalah jawabannya.
Pulihkan hal tak terkait yang Anda matikan di sepanjang jalan. Filter layar atau mode malam bukan musuh; jendela tertentu yang bertumpuk dengan dialog itulah musuhnya.
Apa yang tidak boleh dilakukan untuk melewati dialog
Jangan beri aksesibilitas ke aplikasi asing agar bisa menekan tombol, dan jangan pasang aplikasi bantuan untuk itu. Itu memberikan tepat kemampuan yang hendak ditolak perlindungan, pada layar yang mengesahkan VPN.
Jangan mengotomatiskan dialog dengan alat masukan. Hasilnya sama dengan overlay berbahaya dan tidak mengajarkan apa pun tentang penyebabnya.
Di perangkat terkelola, kebijakan yang membatasi perubahan VPN adalah keputusan administrator. Percobaan overlay bukan izin untuk mengelaknya. Sama halnya, tombol persetujuan yang tidak merespons bukan alasan melemahkan verifikasi sertifikat atau mengubah kredensial akun: tidak satu pun dari kedua pengaturan itu menghapus hambatan sentuh lokal.
Jika masih gagal, laporkan perilaku persisnya
Jelaskan dialognya, bukan kesimpulannya: aplikasi mana yang meminta persetujuan, apakah dialog tetap terbuka atau tertutup, apakah permintaan sensitif lain seperti peringatan sumber tak dikenal atau aksesibilitas juga mengabaikan ketukan, model perangkat dan versi Android, serta daftar overlay dan aksesibilitas yang Anda rekam.
Tanyakan satu hal lagi kepada pemilik dukungan: apakah kebijakan perangkat membatasi perubahan konfigurasi VPN sama sekali. Blokir terkelola terlihat berbeda dari ketukan yang diabaikan, dan tahu mana yang Anda hadapi menghemat putaran kedua.
Kumpulan itu membedakan masalah sentuhan tertutup dari perangkat masukan rusak, dialog beku, atau blokir kebijakan. Itu juga memberi tahu orang berikutnya apakah harus melihat layar atau jaringan.
Panduan Android tentang tapjacking mencakup kondisi jendela tertutup dan API di balik perilaku ini. Jika Anda ingin jejak bukti, cari FLAG_WINDOW_IS_OBSCURED dan FLAG_WINDOW_IS_PARTIALLY_OBSCURED pada peristiwa yang tidak pernah mencapai tombol. Dialog yang tetap terbuka adalah hal yang perlu ditangkap, karena menunjukkan ketukan ditahan, bukan diserahkan ke jendela lain.