ios - OS X 中的accessibilityElementsHidden?如何保护我的应用程序的 UI 内部结构不被窃取?

标签 ios objective-c swift macos cocoa

我需要保护我的 WebView 的 URL(使其不可用于辅助功能检查器)。
不要写信给我说所有流量都可以被嗅探等等。我是一名逆向工程师,我足够了解这一切,而且我知道我想要什么。
我需要保护我的 WebView 的 URL,点。

WebView 的 URL 不存储在 WebView 中,而是嵌套在其子级的第一个子级中,具有 WebAccessibilityObjectWrapper 类和“HTML 内容”类型。
不幸的是,WebAccessibilityObjectWrapper 类是 Apple 的“封闭”类,我们无法扩展它。

iOS(5.0+)有一个很棒的功能,accessibilityElementsHidden,它解决了我的问题。
但 OS X 却没有。

我的解决方案:

  1. 覆盖WebView的NSAccessibilityChildrenAttribute,并为其值传递空数组。它确实可以防止在 Inspector 中走过“ child ”属性(property)。但不幸的是,这不是来自 Inspector 的“点”功能。
  2. 以编程方式在辅助功能子项中查找“HTML 内容”并使用它。不幸的是,我们需要在每次 URL 加载后执行此操作,并且没有专门的事件来执行此操作,它太脏了。

如何更优雅的解决?

最佳答案

iOS 和 macOS 中的辅助功能协议(protocol)略有不同。在 iOS 中,使“ View ”对 VO 技术透明比在 macOS 中更简单。

您可以使用的属性有:

  • 辅助功能元素:您设置为false
  • 辅助功能角色:您需要将其设置为
  • 辅助角色描述:您可以设置为“”;

问题是,当 View 作为辅助功能元素被禁用时,它的所有 subview 都会变得可见。 NSButton 就是一个例子。只需禁用“外部”按钮对象,即:

let b = NSButton(...)
// setup your b 
b.setAccessibilityElement(false)

并不能解决问题。 VO 仍然可以看到纽扣电池。

为 VO 隐藏 UI 元素并不简单,但很棘手。您需要玩一段时间才能了解您想要隐藏的特定对象的本质。

关于ios - OS X 中的accessibilityElementsHidden?如何保护我的应用程序的 UI 内部结构不被窃取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43487857/

相关文章:

ios - Swift 中的 CLPlacemark 崩溃

ios - 如何在 Xamarin Studio 中使用 iOS Designer 添加高度/宽度约束?

objective-c - AVCaptureVideoPreviewLayer 在简历上不显示任何内容

objective-c - 计数 NSMutableArray 时崩溃

macos - 在 NSTextField 上按下 Enter 键时如何做某事

swift - 尝试从核心数据加载时在 swift 中发现 nil

iphone - 如何在 PhoneGap 中创建 viewController 以与主视图一起使用

ios - 解析服务器每次保存时都会创建一个新条目

iphone - 哪个是 iOS 中合适的 XML 解析器?

swift - 内部类可以在 Swift/Xcode 9 中拥有公共(public)函数和变量吗?