Android bỏ qua thao tác chạm phê duyệt VPN? Hãy kiểm tra lớp phủ trước
Nút đồng ý không nhận thao tác chạm thường là vật cản chạm cục bộ, không phải lỗi máy chủ hay tài khoản. Hãy gỡ lớp phủ và giữ nguyên lớp bảo vệ.
Bạn chạm vào nút phê duyệt VPN và hộp thoại không phản hồi. Kết luận tự nhiên là ứng dụng VPN hoặc máy chủ bị hỏng, nên người ta đặt lại mật khẩu, đổi DNS hoặc cài lại ứng dụng khách. Thường thì không điều nào trong số đó chạm tới lỗi, vì Android loại bỏ các thao tác chạm đến qua một vật cản, và màn hình phê duyệt VPN đúng là kiểu lời nhắc đồng ý nhạy cảm được hưởng lớp bảo vệ đó. Thao tác chạm không bao giờ đến được nút.
Lớp bảo vệ thực sự từ chối điều gì
Android bảo vệ các tương tác nhạy cảm khỏi tapjacking, khi một cửa sổ khác nằm trên hộp thoại và hoặc đánh cắp thao tác chạm hoặc làm nó mơ hồ. Một view tham gia bằng View.setFilterTouchesWhenObscured, và sự kiện đến mang MotionEvent.FLAG_WINDOW_IS_OBSCURED khi cửa sổ khác được đánh dấu là che khuất một phần hoặc toàn bộ. Khi điều đó xảy ra, sự kiện bị loại bỏ thay vì được chuyển đến sai chỗ. Android 12 (API 31) mở rộng cùng lớp bảo vệ đó bằng việc chặn thao tác chạm không đáng tin cậy trong các bề mặt đồng ý của hệ thống, đó là lý do hộp thoại phê duyệt có thể từ chối thao tác chạm từ một lớp phủ mà ứng dụng khác vẫn chấp nhận.
Ba thứ thường xuyên tạo ra vật cản: một ứng dụng có quyền hiển thị trên ứng dụng khác, một dịch vụ trợ năng đang vẽ nội dung, và một widget nổi từ trình ghi màn hình hoặc công cụ lọc. Một số tính năng màn hình của nhà sản xuất cũng thêm lớp riêng, đó là lý do cùng một hộp thoại có thể hành xử khác nhau trên hai điện thoại chạy cùng phiên bản Android. Cửa sổ che khuất một phần đặt FLAG_WINDOW_IS_PARTIALLY_OBSCURED, và thao tác chạm bị loại bỏ trước khi nút kịp thấy nó. Đây là thuộc tính của màn hình, không phải của mạng. Không có gì được gửi tới máy chủ VPN vào thời điểm thao tác chạm bị loại bỏ, nên không thay đổi phía máy chủ nào có thể ảnh hưởng tới kết quả.
Phân biệt thao tác chạm chết với kết nối thất bại
Sự khác biệt đó chính là toàn bộ chẩn đoán và nó mất mười giây. Nếu thao tác chạm bị bỏ qua và hộp thoại giữ nguyên như cũ, vật cản là cục bộ. Nếu hộp thoại đóng lại và sau đó có lỗi xuất hiện, sự đồng ý đã được chấp nhận và bạn đã sang giai đoạn khác cần thông tin sự kiện của chính ứng dụng VPN.
Bạn có thể xác nhận cách đọc cục bộ bằng việc kiểm tra xem ứng dụng yêu cầu có thử kết nối hay không. Một ứng dụng khách không bao giờ ghi nhận nỗ lực bắt tay khi hộp thoại đồng ý đang ở trên màn hình thì chưa chạm tới mạng.
adb shell cmd appops get com.example.vpn SYSTEM_ALERT_WINDOW
adb shell settings get secure enabled_accessibility_servicesHãy liệt kê ai giữ quyền lớp phủ và những dịch vụ trợ năng nào đang bật, rồi đối chiếu với những gì đang chạy. Đừng tắt chính lớp bảo vệ của nền tảng; nó là thứ ngăn một cửa sổ ẩn trả lời lời nhắc đồng ý thay bạn.
Gỡ vật cản, rồi thử lại luồng thông thường
Trước hết hãy xác định ứng dụng đã yêu cầu phê duyệt VPN, để biết bạn đang cấp sự đồng ý nào. Sau đó dừng lớp phủ cụ thể qua cài đặt của chính nó thay vì thu hồi một quyền rộng mà bạn có thể cần sau này. Bộ lọc màn hình thường có công tắc trong ứng dụng của nó; widget nổi có nút đóng; chế độ màn hình của nhà sản xuất có công tắc trong cài đặt màn hình.
Sau đó quay lại ứng dụng VPN và yêu cầu phê duyệt lần nữa, để hộp thoại được tạo mới. Nếu thao tác chạm giờ hoạt động, hãy điều chỉnh hành vi tương thích của lớp phủ hoặc để nó tắt trong khi kết nối, và giữ lớp bảo vệ chạm được bật.
Nếu bạn không xác định được cửa sổ nào chịu trách nhiệm, hãy gỡ từng cái một và thử lại hộp thoại đồng ý sau mỗi thay đổi. Thanh điều khiển của trình ghi hoặc lối tắt nổi thường là thủ phạm, và thứ bạn vừa gỡ ngay trước khi nó hoạt động chính là câu trả lời.
Khôi phục mọi thứ không liên quan mà bạn đã tắt dọc đường. Bộ lọc màn hình hay chế độ ban đêm không phải kẻ thù; cửa sổ cụ thể chồng lên hộp thoại mới là kẻ thù.
Những gì không nên làm để vượt qua hộp thoại
Đừng cấp quyền trợ năng cho một ứng dụng lạ để nó có thể nhấn nút, và đừng cài ứng dụng hỗ trợ cho mục đích đó. Chúng trao đúng khả năng mà lớp bảo vệ tồn tại để từ chối, trên một màn hình cấp quyền cho VPN.
Cũng đừng tự động hóa hộp thoại bằng công cụ nhập liệu. Nó cho kết quả giống một lớp phủ độc hại và không dạy bạn điều gì về nguyên nhân.
Trên thiết bị được quản lý, chính sách hạn chế thay đổi VPN là quyết định của quản trị viên. Thử nghiệm lớp phủ không phải là sự cho phép vượt qua nó. Tương tự, một nút đồng ý không phản hồi không phải lý do để làm yếu việc xác minh chứng chỉ hoặc đổi thông tin đăng nhập tài khoản: không cài đặt nào gỡ được vật cản chạm cục bộ.
Nếu vẫn thất bại, hãy báo cáo hành vi chính xác
Mô tả hộp thoại chứ không phải kết luận: ứng dụng nào yêu cầu phê duyệt, hộp thoại có ở lại mở hay đã đóng, các lời nhắc nhạy cảm khác như cảnh báo nguồn không rõ hoặc trợ năng có bỏ qua thao tác chạm hay không, kiểu thiết bị và phiên bản Android, cùng danh sách lớp phủ và trợ năng bạn đã ghi lại.
Hãy hỏi người phụ trách hỗ trợ thêm một câu khi bạn ở đó: chính sách thiết bị có hạn chế thay đổi cấu hình VPN hay không. Một chặn do quản lý trông khác với thao tác chạm bị bỏ qua, và biết mình đang gặp cái nào sẽ tiết kiệm một vòng thứ hai.
Bộ thông tin đó phân biệt vấn đề chạm bị che với thiết bị nhập liệu hỏng, hộp thoại bị treo hoặc chặn do chính sách. Nó cũng cho người tiếp theo biết nên nhìn vào màn hình hay vào mạng.
Hướng dẫn tapjacking của Android bao gồm các điều kiện cửa sổ bị che và các API đằng sau hành vi này. Nếu bạn muốn dấu vết bằng chứng, hãy tìm FLAG_WINDOW_IS_OBSCURED và FLAG_WINDOW_IS_PARTIALLY_OBSCURED trên sự kiện không bao giờ đến được nút. Hộp thoại còn mở chính là thứ cần ghi lại, vì nó cho thấy thao tác chạm đã bị giữ lại thay vì chuyển cho cửa sổ khác.