android 网络安全配置

https://developer.android.com/privacy-and-security/security-config?hl=zh-cn

Kotlin 复制代码
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </base-config>
</network-security-config>

官方说明地址

它用于控制应用的网络连接行为,尤其是与 证书信任明文流量(cleartext traffic) 相关的设置。

具体来说,这段 XML 主要设置了以下内容:

1. cleartextTrafficPermitted="true"

  • 目的:允许应用进行明文流量通信(即不加密的 HTTP 请求)。
  • 默认情况下,从 Android 9(API 级别 28)开始,禁止明文流量 ,即应用默认只能通过 HTTPS(加密协议)进行通信。如果你仍然需要支持 HTTP 请求或其他不加密的通信,可以通过将 cleartextTrafficPermitted 设置为 true 来显式允许明文流量。

在这个配置中,cleartextTrafficPermitted="true" 表示允许应用进行不加密的 HTTP 请求(明文流量),但是请注意,这可能会带来安全风险,尤其是在生产环境中,推荐只在开发阶段使用明文流量。

2. <trust-anchors>

  • 目的:指定应用信任的证书颁发机构(CA)和证书来源。
  • 信任锚点:这部分配置指定了哪些证书是被信任的,用于验证服务器的证书。

在你的 XML 配置中,信任的证书源有两个:

  • <certificates src="system" />:这表示应用将信任 Android 系统的默认证书(这些证书是由设备制造商和操作系统提供的)。
  • <certificates src="user" />:这表示应用将信任用户安装的证书。用户可以安装自己的 CA 证书,允许应用信任通过这些证书签署的服务器。

3. <base-config>

  • 目的:指定一个基础的网络安全配置,这将应用到所有网络请求,除非有更具体的配置覆盖它。

在这段配置中,<base-config> 包含了:

  • cleartextTrafficPermitted="true":表示允许明文流量。
  • <trust-anchors>:指定信任的证书来源。

总结

这段配置的含义是:

  • 允许明文流量:即允许通过 HTTP 协议进行网络通信(不加密)。
  • 信任的证书源:信任 Android 系统自带的证书以及用户自己安装的证书。

安全性考量

尽管配置允许明文流量(HTTP),这通常是为了在开发或调试过程中方便进行网络请求,但在生产环境中,强烈建议使用 HTTPS(加密协议)以保护数据安全。默认情况下,Android 9 及更高版本会强制应用只通过 HTTPS 进行通信,以防止数据在传输过程中被窃听或篡改。

如果你想在生产环境中避免明文流量的安全风险,可以考虑将 cleartextTrafficPermitted="false" 或删除这一配置,确保所有网络请求都通过 HTTPS 完成。

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />  //允许所有http明文
    <domain-config cleartextTrafficPermitted="true">。 //允许特定的域名明文
        <domain includeSubdomains="true">www.baidu.com</domain>
   
    </domain-config>
</network-security-config>

这段 XML 配置是一个 Android 网络安全配置文件 ,它指定了应用在不同域名上的网络请求行为,特别是关于 明文流量(cleartext traffic) 的允许情况。

1. <base-config cleartextTrafficPermitted="true" />

这个配置的意思是:

  • cleartextTrafficPermitted="true" :允许应用进行 明文流量(HTTP) 的网络请求。默认情况下,Android 9(API 级别 28)及以上版本会禁用明文流量(即不加密的 HTTP 请求),只有通过 HTTPS(加密协议)进行通信才是允许的。但是,如果你在 base-config 中设置了 cleartextTrafficPermitted="true",则应用会允许通过 HTTP 进行网络通信。

2. <domain-config cleartextTrafficPermitted="true">

  • 这一部分配置允许针对某些特定的 域名子域名 进行明文流量的通信。也就是说,应用会允许对以下列出的域名发起 HTTP 请求,而不需要强制使用 HTTPS。

配置中包含了多个 <domain> 标签,每个标签对应一个域名,允许对这些域名及其子域名进行明文流量通信。具体来说:

XML 复制代码
<domain includeSubdomains="true">www.baidu.com</domain>
<domain includeSubdomains="true">eee.sf</domain>

对于这些域名及其所有子域名,应用都允许使用明文流量(HTTP)。即使这些域名的某些子域名并没有配置 HTTPS,依然允许通过 HTTP 进行通信。

相关推荐
一笑的小酒馆4 小时前
Android在ksp中简单使用Room
android
Synfuture阳途5 小时前
关于终端安全管理系统的超全解析
网络·安全·web安全
meimeiqian5 小时前
flutter android端抓包工具
android·flutter
Android技术之家5 小时前
谷歌决定终止开源Android以及对开发者的影响
android·开源
每次的天空6 小时前
Android Jetpack学习总结(源码级理解)
android·学习·android jetpack
木子庆五6 小时前
Android设计模式之代理模式
android·设计模式·代理模式
在雨季等你7 小时前
创业之旅 - 反思 - 整改 - 新的方向 - 诚邀
android
Long_poem7 小时前
【自学笔记】PHP语言基础知识点总览-持续更新
android·笔记·php
盐碱地里的木桐7 小时前
中国网络安全产业分析报告
安全·web安全·智能网联汽车