Network security configuration的作用?应用使用http的配置逻辑解析
Network Security Configuration 实际作用说明
这是Android 7.0(API 24)引入的、由系统层强制管控的应用级网络规则配置组件,核心不是为了给应用 开HTTP后门,而是把之前系统默认统一执行的网络安全校验逻辑,开放给应用做精细化的边界定制,所有规则变更都受系统框架约束,不会完全突破底层安全防护底线。
具体实际用途包含以下几类:
- 精准控制明文HTTP访问权限
从Android 9.0(API 28)开始,应用默认全局禁止发送明文HTTP请求,所有匹配HTTP规则的网络请求会被系统直接拦截。通过该配置可以打破全局限流规则:既可以全局放开HTTP访问,也可以仅对指定的业务域名、第三方服务域名单独放行HTTP访问权限,其余所有网络请求依然强制走HTTPS,避免因为兼容旧服务过度扩大安全敞口。 - 自定义应用的证书信任范围
默认状态下,应用的HTTPS请求仅信任系统预装的权威CA证书。通过该配置可以灵活调整信任逻辑:- 调试场景下可以单独为debug构建版本放开用户安装的证书信任权限,满足抓包、自签名内网HTTPS服务的连接需求,且这类规则不会随正式发布包带到线上环境
- 生产场景下可以指定应用仅信任特定私有CA签发的证书,即使系统被植入了恶意CA证书,也无法对应用的HTTPS流量完成中间人截获
- 定制强制TLS安全策略
可以全局或针对特定域名配置最低TLS版本要求,强制所有HTTPS连接禁用存在安全风险的老旧TLS 1.0/1.1协议,指定必须使用的加密套件版本,从连接层面规避已知的传输层安全漏洞。 - 实现不同构建版本的规则隔离
可以针对开发调试包、正式发布包设置完全独立的网络安全规则,避免为了调试临时放开的安全限制被误带到生产环境,从配置层面降低线上安全风险。
常见认知误区:很多开发者第一次接触该配置,都是因为要兼容老HTTP接口被系统拦截,会误以为它的唯一作用是绕开明文请求拦截。实际上HTTP放行只是其中非常小的一个功能点,它是Android系统替代之前散乱、无标准的网络安全管控逻辑的标准化方案,核心目标是在不突破系统安全底线的前提下,给应用足够的灵活度适配不同业务场景,同时避免应用因为兼容需求无限制开放网络权限导致的安全问题。
内容的提问来源于stack exchange,提问作者Hossam Sadekk
相关产品推荐
相关产品推荐

