CodeQL 文档

不安全的 WebView 获取

ID: swift/unsafe-webview-fetch
Kind: path-problem
Security severity: 6.1
Severity: warning
Precision: high
Tags:
   - security
   - external/cwe/cwe-079
   - external/cwe/cwe-095
   - external/cwe/cwe-749
Query suites:
   - swift-code-scanning.qls
   - swift-security-extended.qls
   - swift-security-and-quality.qls

单击查看 CodeQL 仓库中的查询

在没有限制基本 URL 的情况下在 web 视图中获取数据可能会允许攻击者访问敏感的本地数据,例如使用 file://。然后可以使用攻击者控制的机器的 URL 从软件中提取数据。更一般地说,攻击者可以使用他们控制下的 URL 作为跨站点脚本攻击的一部分。

推荐

在将 HTML 加载到 web 视图时,始终将 baseURL 设置为您控制的适当 URL 或 about:blank。不要使用 nil,因为这不会限制可以解析的 URL。也不要使用可能被攻击者控制的 baseURL

示例

在以下示例中,对 UIWebView.loadHTMLString 的调用将 baseURL 设置为 nil,这不会限制可以从网页中解析的 URL。


let webview = UIWebView()

...

webview.loadHTMLString(htmlData, baseURL: nil) // BAD

为了解决这个问题,我们将 baseURL 设置为 about:blank。这确保攻击者无法解析指向本地文件系统或其控制下的 Web 服务器的 URL。


let webview = UIWebView()

...

webview.loadHTMLString(htmlData, baseURL: URL(string: "about:blank")) // GOOD

参考

  • ©2025GitHub, Inc.
  • 条款
  • 隐私