【发布时间】:2017-04-19 06:17:48
【问题描述】:
我需要保护我的 WebView 的 URL(使其对 Accessibility Inspector 不可用)。
不要给我写信说无论如何都可以嗅探所有流量等等。我是一名逆向工程师,我知道这一切,而且我知道我想要什么。
我需要保护我的 WebView 的 URL,点。
WebView 的 URL 不是存储在 WebView 中,而是嵌套在其子项的第一个子项中,具有 WebAccessibilityObjectWrapper 类和“HTML 内容”类型。
不幸的是,WebAccessibilityObjectWrapper 类是 Apple 的“封闭”类,我们无法扩展它。
iOS(从 5.0+ 起)有很棒的功能,accessibilityElementsHidden,它解决了我的问题。
但 OS X 没有。
我的解决方案:
- 为 WebView 覆盖
NSAccessibilityChildrenAttribute,并为其值传递空数组。它确实可以防止在 Inspector 中穿过“儿童”财产。但是,不幸的是,不是来自 Inspector 的“点”功能。 - 以编程方式在辅助功能子项中查找“HTML 内容”并使用它。不幸的是,我们需要在每次 URL 加载后都这样做,而且没有特殊事件,这太脏了。
如何更优雅地解决?
【问题讨论】:
-
一些想法要测试,不确定 MacOS 中有什么可用的:
.isAccesibilityElement设置为 NO/false,.accesibilityTraits设置为无,父视图的accessibilityElements设置为仅包含所需的视图(最后一种方法可能真的很难,因为它是一个网络视图) -
你为什么讨厌盲人? (说真的。这就是可访问性的对象。禁用它会使他们无法使用您的应用。)
-
@Kamil.S 感谢 accessesibilityTraits 和部分accessibilityElements,将进行测试。
-
@duskwuff 1) 反正盲人的生活难以忍受,我的应用程序是小改动,太小了。如果你认为苹果真的帮助盲人,那是无稽之谈。 2) 我根本不想禁用它,我只想隐藏 WebView 的 URL。如果这是不可能的,我需要完全禁用它——这不是我的错,而是苹果的错。 3)如果我允许窃贼仍然是我的内容,我将根本无法制作应用程序,因为我至少需要食物。 :)
-
@Rou1997 我相信您知道您的应用仍然容易被网络数据包嗅探,并且可能仍然可以通过这种方式找到 url。
标签: ios objective-c swift macos cocoa