MASTG-TEST-0235: 允许明文流量的 Android 应用配置
概述¶
由于 Android 9 (API level 28) 默认情况下会阻止明文 HTTP 流量 (感谢 默认的网络安全配置),但应用程序仍然可以通过多种方式发送它。
- AndroidManifest.xml: 设置
<application>
标签的android:usesCleartextTraffic
属性。 请注意,如果配置了网络安全配置,则会忽略此标志。 - 网络安全配置: 在
<base-config>
或<domain-config>
元素上将cleartextTrafficPermitted
属性设置为true
。
步骤¶
- 逆向工程该应用 ( 反编译 Java 代码)。
- 获取 AndroidManifest.xml。
- 获取网络安全配置。
- 从 AndroidManifest.xml 中读取
usesCleartextTraffic
的值。 - 从 NSC
<base-config>
元素中读取cleartextTrafficPermitted
的值。 - 从 NSC
<domain-config>
元素中读取cleartextTrafficPermitted
的值。
观察¶
输出包含可能允许明文传输的配置列表。
评估¶
如果允许明文传输,则测试用例失败。 如果以下任一条件为真,则可能发生这种情况
- AndroidManifest 将
usesCleartextTraffic
设置为true
并且没有 NSC。 - NSC 在
<base-config>
中将cleartextTrafficPermitted
设置为true
。 - NSC 在任何
<domain-config>
中将cleartextTrafficPermitted
设置为true
。
注意: 如果 AndroidManifest 将 usesCleartextTraffic
设置为 true
并且存在 NSC,即使它只有一个空的 <network-security-config>
元素,测试也不会失败。 例如
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
</network-security-config>