处理Google警告:针对所有网域允许传输明文流量&您的应用会在验证安全连接时接受用户证书
收到Google警告两条如下:
针对所有网域允许传输明文流量 您的应用的网络安全配置针对所有网域允许传输明文流量。窃密者可以利用这一点拦截您的应用所发送的数据。如果这些数据是敏感数据或可用于识别用户身份,则可能会对用户的隐私带来不利影响。 建议您将 cleartextTrafficPermitted 标记设置为 false,或者为特定网域添加加密政策,从而仅允许传输加密流量。 https://developer.android.com/training/articles/security-config
您的应用会在验证安全连接时接受用户证书。 您的应用的网络安全配置允许使用用户指定的证书。窃密者可以利用这一点拦截您的应用所发送的数据或修改传输中的数据。 请考虑将允许使用用户证书的 trust-anchors 元素嵌套在 debug-overrides 元素中,以确保只有在android:debuggable 设为 true 的情况下,才可以使用用户证书。 https://developer.android.com/training/articles/security-config#TrustingDebugCa
原来的配置是(请忽略***):
<network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="***" /> <certificates src="***" /> </trust-anchors> </base-config> </network-security-config>
trust-anchors警告比较容易改,外面包一层debug-overrides就可以了,明文传输需要将base-config中的cleartextTrafficPermitted赋值为false。
然后新建domain-config,设置属性cleartextTrafficPermitted="true",然后将需要明文传输的域名列在里面就可以了,结果如下:
<network-security-config> <base-config cleartextTrafficPermitted="false"> <debug-overrides> <trust-anchors> <certificates src="***" /> <certificates src="***" /> </trust-anchors> </debug-overrides> </base-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">your_domain1</domain> <domain includeSubdomains="true">your_domain2</domain>
</domain-config>
</network-security-config>