MASTG-TEST-0233: 硬编码 HTTP URL
概述¶
Android 应用程序可能在其应用程序二进制文件、库二进制文件或 APK 内的其他资源中嵌入硬编码的 HTTP URL。这些 URL 可能指示应用程序通过未加密的连接与服务器通信的潜在位置。
警告
仅存在 HTTP URL 并不一定意味着它们正在被积极地用于通信。它们的使用可能取决于运行时条件,例如 URL 的调用方式以及应用程序的配置是否允许明文流量。例如,如果在 AndroidManifest.xml 中禁用了明文流量,或者受到网络安全配置的限制,则 HTTP 请求可能会失败。请参阅 Android 应用配置允许明文流量。
步骤¶
- 对应用程序进行逆向工程( 反编译 Java 代码)。
- 运行静态分析( Android 静态分析)工具,并查找任何
http://
URL。
观察¶
输出包含一个 URL 列表及其在应用程序中的位置。
评估¶
如果确认任何 HTTP URL 用于通信,则测试用例失败。
硬编码 HTTP URL 的存在并不意味着它们一定会被使用;必须通过仔细的检查和测试来验证它们的实际使用情况。
- 逆向工程:检查引用 HTTP URL 的代码位置。确定它们是否仅仅作为常量存储,还是通过
HttpURLConnection
或OkHttp
等网络 API 主动用于创建 HTTP 请求。 - 静态分析:分析应用程序的配置,以识别是否允许明文流量。例如,检查 AndroidManifest.xml 中的
android:usesCleartextTraffic="true"
或检查network_security_config
。有关详细指导,请参阅 Android 应用配置允许明文流量。
此外,使用动态测试方法来补充此静态检查。
-
动态分析:使用 Frida 等工具在运行时挂钩网络 API。这可以揭示在执行期间如何以及何时使用 HTTP URL。有关更多详细信息,请参阅 运行时使用传输明文流量的网络 API。
-
网络流量拦截:使用 Burp Suite、mitmproxy 或 Wireshark 等工具捕获和分析网络流量。这种方法可以确认应用程序在实际使用过程中是否连接到已识别的 HTTP URL,但依赖于测试人员全面执行应用程序功能的能力。请参阅 在网络上观察到的明文流量。