Android VPN-ის დადასტურების შეხებას უგულებელყოფს? ჯერ გადაფარვა შეამოწმეთ
დადასტურების ღილაკი, რომელიც შეხებას არ იღებს, ჩვეულებრივ ეკრანზე ადგილობრივი დაბრკოლებაა და არა სერვერის ან ანგარიშის გაუმართაობა. მოხსენით გადაფარვა და შეინარჩუნეთ დაცვა.
ეხებით VPN-ის დადასტურების ღილაკს და დიალოგი არ რეაგირებს. ბუნებრივი დასკვნაა, რომ აპი ან სერვერი გაფუჭებულია, ამიტომ ადამიანები აღადგენენ პაროლებს, ცვლიან DNS-ს ან ხელახლა აყენებენ კლიენტს. ჩვეულებრივ არც ერთი მათგანი არ ეხება ხარვეზს, რადგან Android უგულებელყოფს შეხებებს, რომლებიც დაბრკოლების გავლით მოდის, და VPN-ის დადასტურების ეკრანი სწორედ ასეთი მგრძნობიარე თანხმობის დიალოგია. შეხება ღილაკს ვერასოდეს აღწევს.
რაზე უარს ამბობს დაცვა სინამდვილეში
Android იცავს მგრძნობიარე ინტერაქციებს tapjacking-ისგან, როცა სხვა ფანჯარა ზის დიალოგზე და იპარავს შეხებას ან ბუნდოვანს ხდის. ხედი ერთვება View.setFilterTouchesWhenObscured-ით, და მოვლენა მოდის MotionEvent.FLAG_WINDOW_IS_OBSCURED-ით, როცა სხვა ფანჯარა მონიშნულია როგორც ნაწილობრივ ან სრულად დამფარავი. მაშინ მოვლენა იშლება არასწორ ადგილას მიწოდების ნაცვლად. Android 12 (API 31) გააფართოვა იგივე დაცვა არასანდო შეხებების დაბლოკვით სისტემური თანხმობის ზედაპირებზე, ამიტომ დადასტურების დიალოგს შეუძლია უარყოს გადაფარვიდან მოსული შეხება, რომელსაც სხვა აპები ჯერ კიდევ მიიღებდნენ.
სამი რამ რეგულარულად ქმნის დაბრკოლებას: აპი სხვა აპებზე ჩვენების ნებართვით, წვდომადობის სერვისი, რომელიც შიგთავსს ხატავს, და მოცურავე ვიჯეტი ეკრანის ჩამწერიდან ან ფილტრის ხელსაწყოდან. ზოგიერთი მწარმოებლის ეკრანის ფუნქცია საკუთარ ფენას ამატებს, ამიტომ იგივე დიალოგი შეიძლება სხვაგვარად მოიქცეს ორ ტელეფონზე ერთი და იმავე Android-ის ვერსიით. ნაწილობრივ დამფარავი ფანჯარა აყენებს FLAG_WINDOW_IS_PARTIALLY_OBSCURED-ს, და შეხება იშლება მანამ, სანამ ღილაკი მას დაინახავს. ეს ეკრანის თვისებაა და არა ქსელის. შეხების გაუქმების მომენტში VPN-ის სერვერზე არაფერი გაგზავნილა, ამიტომ სერვერის მხრიდან ვერც ერთი ცვლილება ვერ იმოქმედებს შედეგზე.
გამოყავით მკვდარი შეხება წარუმატებელი კავშირისგან
განსხვავება მთელი დიაგნოზია და ათ წამს იკავებს. თუ შეხება უგულებელყოფილია და დიალოგი ზუსტად ისე რჩება, როგორც იყო, დაბრკოლება ადგილობრივია. თუ დიალოგი იხურება და შემდეგ შეცდომა ჩნდება, თანხმობა მიღებულია და თქვენ გადახვედით სხვა ეტაპზე, რომელსაც თავად აპის მოვლენის ინფორმაცია სჭირდება.
ადგილობრივი წაკითხვის დადასტურება შეგიძლიათ შემოწმებით, საერთოდ სცადა თუ არა მოთხოვნის ავტორმა აპმა კავშირი. კლიენტი, რომელიც არასოდეს არ აღრიცხავს ხელის ჩამორთმევის ცდას, სანამ თანხმობის დიალოგი ეკრანზეა, ქსელს არ მიუღწევია.
adb shell cmd appops get com.example.vpn SYSTEM_ALERT_WINDOW
adb shell settings get secure enabled_accessibility_servicesჩამოწერეთ, ვის აქვს გადაფარვის ნებართვა და რომელი წვდომადობის სერვისებია ჩართული, შემდეგ შეადარეთ მიმდინარეს. ნუ გამორთავთ თავად პლატფორმის დაცვას; სწორედ ის უშლის ხელს ფარულ ფანჯარას, რომ თქვენ ნაცვლად უპასუხოს თანხმობის დიალოგს.
მოხსენით დაბრკოლება და შემდეგ ხელახლა სცადეთ ჩვეულებრივი დინება
ჯერ დაადგინეთ, რომელმა აპმა მოითხოვა VPN-ის დადასტურება, რათა იცოდეთ, რა თანხმობას აძლევთ. შემდეგ შეაჩერეთ კონკრეტული გადაფარვა მისივე პარამეტრიდან და არა ფართო ნებართვის გატანით, რომელიც მოგვიანებით შეიძლება დაგჭირდეთ. ეკრანის ფილტრს ჩვეულებრივ აქვს გადამრთველი საკუთარ აპში; მოცურავე ვიჯეტს აქვს დახურვის მართვა; მწარმოებლის ეკრანის რეჟიმს აქვს გადამრთველი ეკრანის პარამეტრებში.
შემდეგ დაბრუნდით VPN-ის აპში და კვლავ მოითხოვეთ დადასტურება, რათა დიალოგი თავიდან შეიქმნას. თუ შეხება ახლა მუშაობს, დაარეგულირეთ გადაფარვის თავსებადობის ქცევა ან დატოვეთ ის გამორთული დაკავშირებისას, და შეინარჩუნეთ შეხების დაცვა ჩართული.
თუ ვერ იგებთ, რომელი ფანჯარაა პასუხისმგებელი, ამოიღეთ ისინი სათითაოდ და ყოველი ცვლილების შემდეგ სცადეთ თანხმობის დიალოგი. ჩამწერის მართვის ზოლი ან მოცურავე მალსახმობი ჩვეულებრივი დამნაშავეა, და სწორედ ის, რაც წარმატებამდე ცოტა ხნით ადრე ამოიღეთ, არის პასუხი.
დააბრუნეთ ყველა შეუსაბამო რამ, რაც გზაში გამორთეთ. ეკრანის ფილტრი ან ღამის რეჟიმი მტერი არ არის; მტერია კონკრეტული ფანჯარა, რომელიც დიალოგს ემთხვევა.
რა არ უნდა გააკეთოთ დიალოგის გასავლელად
ნუ მისცემთ უცნობ აპს წვდომადობას, რომ ღილაკს დააჭიროს, და ამისთვის დამხმარე აპს ნუ დააყენებთ. ეს აძლევს ზუსტად იმ შესაძლებლობას, რომლის უარყოფისთვისაც დაცვა არსებობს, VPN-ის უფლების მიმცემ ეკრანზე.
დიალოგს შეტანის ხელსაწყოთი ავტომატურად ნუ ამუშავებთ. ის იგივე შედეგს იძლევა, რასაც მავნე გადაფარვა, და ვერაფერს გასწავლით მიზეზზე.
მართულ მოწყობილობაზე VPN-ის ცვლილებების შემზღუდავი პოლიტიკა ადმინისტრატორის გადაწყვეტილებაა. გადაფარვის ექსპერიმენტი მის გვერდის ავლის ნებართვა არ არის. ანალოგიურად, უპასუხო დადასტურების ღილაკი არ არის სერთიფიკატის შემოწმების შესუსტების ან ანგარიშის მონაცემების შეცვლის მიზეზი: ორივე პარამეტრიდან არც ერთი არ აშორებს ადგილობრივ შეხების დაბრკოლებას.
თუ მაინც არ გამოდის, შეატყობინეთ ზუსტი ქცევა
აღწერეთ დიალოგი და არა დასკვნა: რომელმა აპმა მოითხოვა დადასტურება, დარჩა დიალოგი ღია თუ დაიხურა, უგულებელყოფს თუ არა შეხებებს სხვა მგრძნობიარე მოთხოვნებიც, როგორიცაა უცნობი წყაროების ან წვდომადობის გაფრთხილებები, მოწყობილობის მოდელი და Android-ის ვერსია, და თქვენ მიერ შეგროვებული გადაფარვისა და წვდომადობის სიები.
იქ ყოფნისას მხარდაჭერის მფლობელს კიდევ ერთი ჰკითხეთ: ზღუდავს თუ არა მოწყობილობის პოლიტიკა საერთოდ VPN-ის კონფიგურაციის ცვლილებებს. მართული ბლოკირება განსხვავებულად გამოიყურება, ვიდრე უგულებელყოფილი შეხება, და იმის ცოდნა, რომელს უყურებთ, მეორე რაუნდს დაზოგავს.
ეს ნაკრები გამოყოფს დაფარული შეხების პრობლემას გაფუჭებული შეტანის მოწყობილობისგან, გაყინული დიალოგისგან ან პოლიტიკის ბლოკირებისგან. ის ასევე ეუბნება შემდეგ ადამიანს, უყუროს ეკრანს თუ ქსელს.
Android-ის tapjacking-ის სახელმძღვანელო მოიცავს დაფარული ფანჯრების პირობებს და ამ ქცევის უკან მდგარ API-ებს. თუ მტკიცებულებების კვალი გსურთ, მოძებნეთ FLAG_WINDOW_IS_OBSCURED და FLAG_WINDOW_IS_PARTIALLY_OBSCURED იმ მოვლენაზე, რომელიც ღილაკს ვერასოდეს მიუღწევია. ღიად დარჩენილი დიალოგი არის ის, რაც უნდა დაფიქსირდეს, რადგან აჩვენებს, რომ შეხება შეჩერდა და არ გადაეცა სხვა ფანჯარას.