Android中的usescleartexttraffic属性详解

Android中的usescleartexttraffic属性详解

usesCleartextTraffic 是 Android 应用程序开发中的一个重要配置选项,用于控制应用程序是否允许通过不加密的 HTTP 协议进行网络通信。在 Android 应用的开发过程中,正确地配置 usesCleartextTraffic 对于保护用户数据安全、符合最佳实践和遵守法律法规非常重要。下面将详细介绍 usesCleartextTraffic 的概念、用法、最佳实践及相关技术细节。

1. usesCleartextTraffic 概述

在 Android 应用程序中,usesCleartextTraffic 是一个位于 AndroidManifest.xml 文件中的属性。它定义了应用是否可以通过 HTTP 这样的明文协议进行网络通信。由于 HTTP 协议传输的数据是不加密的,因此在现代应用中通常推荐使用 HTTPS 来保障数据的安全性。

定义

usesCleartextTrafficapplication 标签中的一个布尔属性,用于指示应用是否可以进行明文网络通信。其默认值为 false,这意味着如果没有显式声明 usesCleartextTraffic,应用会默认不允许进行明文网络通信。

<applicationandroid:usesCleartextTraffic="true"  <!-- 允许明文流量 -->...>...
</application>

2.使用 usesCleartextTraffic 的配置方式

2.1 AndroidManifest.xml 中配置

要配置 usesCleartextTraffic,你需要在 AndroidManifest.xml 文件中的 application 标签中添加相应的属性:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapp"><applicationandroid:usesCleartextTraffic="true"  <!-- 或者设置为 false -->...>...</application>
</manifest>
  • 设置为 true:允许应用进行明文通信。

  • 设置为 false:不允许应用进行明文通信(推荐设置)。

2.2 Network Security Configuration 文件中配置

你也可以通过 networkSecurityConfig 来更细粒度地控制网络通信安全性,尤其是针对不同的域名或主机进行配置。

<applicationandroid:networkSecurityConfig="@xml/network_security_config"...>...
</application>

network_security_config.xml 文件示例:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config><domain-config cleartextTrafficPermitted="false"><domain includeSubdomains="true">example.com</domain></domain-config><domain-config cleartextTrafficPermitted="true"><domain includeSubdomains="true">allow-cleartext.com</domain></domain-config>
</network-security-config>

在这个配置中,cleartextTrafficPermitted 用于指示是否允许明文流量。你可以为不同的域名进行不同的配置。

3. usesCleartextTraffic 的最佳实践

3.1 遵循安全最佳实践

  • 使用 HTTPS:现代应用程序应尽可能使用 HTTPS 进行所有网络通信,以确保数据在传输过程中的安全性和隐私性。HTTP 传输的数据是明文的,容易被中间人攻击(MITM),因此不推荐使用。

3.2 默认情况下禁用明文流量

  • 配置 usesCleartextTrafficfalse:默认情况下将 usesCleartextTraffic 设置为 false 是一个好的安全实践。这样可以防止应用程序在未经加密的情况下进行网络通信。

3.3 精细控制网络配置

  • 使用 Network Security Configuration 文件:如果确实需要使用明文流量,使用 Network Security Configuration 文件来指定仅对特定的域名或主机允许明文流量。这种做法可以将风险最小化,并保持大多数通信的加密状态。

3.4 评估和更新依赖库

  • 检查第三方库的网络通信:确保你使用的所有第三方库和服务也遵循了相同的安全标准。如果这些库在默认情况下使用 HTTP 而不是 HTTPS,你可能需要更新或替换这些库。

4. 相关问题与解决方案

常见问题

  1. 我的应用在 API 级别 28 及以下版本上正常工作,但在 API 级别 29 及以上版本中出现问题。为什么?

    从 Android 9(API 级别 28)开始,系统默认不允许明文流量。为了在这些版本中允许明文流量,你需要显式设置 usesCleartextTraffic 属性或使用 Network Security Configuration 文件。

  2. 如何处理第三方 SDK 或服务要求 HTTP?

    如果某些第三方服务只支持 HTTP,你可以在 network_security_config.xml 中为这些服务配置允许明文流量,或者联系服务提供商请求支持 HTTPS。

5.使用场景和影响

5.1 默认配置

  • 默认情况下,Android 9.0(API 级别 28)及更高版本不允许应用发送或接收明文流量。这是为了提高数据的安全性,防止网络中间人攻击等安全问题。

5.2 清除文本流量

  • 如果你的应用需要通过 HTTP(而不是 HTTPS)与后端服务器通信,你必须明确声明 usesCleartextTraffic 属性并将其设置为 true。这会使得 Android 系统允许应用发送和接收未加密的网络流量。

<applicationandroid:usesCleartextTraffic="true">...
</application>
  • 这种设置通常不推荐,因为明文传输的数据易受攻击和窃听。推荐的做法是尽可能使用 HTTPS 加密传输数据,以确保通信的安全性和数据的保密性。

5.3 适配性

  • 如果你的应用需要向后兼容旧版本的 Android(低于 9.0),并且必须使用 HTTP,请确保在 AndroidManifest.xml 中设置 usesCleartextTraffictrue。但是,建议在可能的情况下升级你的后端服务以支持 HTTPS。

6.注意事项

  • 安全性问题:使用明文传输的数据容易被攻击者窃听和篡改,因此除非绝对必要,应尽量避免使用 usesCleartextTraffic="true"

  • API 级别限制:从 Android 9.0 开始,应用默认禁止使用明文传输。为了兼容性和安全性,推荐尽快迁移至 HTTPS。

总之,usesCleartextTraffic 属性提供了一种在 Android 应用中配置网络安全性的方法,但开发者应根据实际需求和安全最佳实践来合理配置,保障用户数据的安全和隐私。

总结

usesCleartextTraffic 是一个关键的配置项,用于管理 Android 应用中的明文网络流量。正确地配置这一属性对于确保应用的数据安全性和隐私保护至关重要。在大多数情况下,应当遵循安全最佳实践,使用 HTTPS 替代 HTTP,并在 Network Security Configuration 文件中精细地控制不同域名的流量规则。

配置示例

<applicationandroid:usesCleartextTraffic="false"...>...
</application>

网络安全配置示例

<?xml version="1.0" encoding="utf-8"?>
<network-security-config><domain-config cleartextTrafficPermitted="false"><domain includeSubdomains="true">example.com</domain></domain-config><domain-config cleartextTrafficPermitted="true"><domain includeSubdomains="true">allow-cleartext.com</domain></domain-config>
</network-security-config>

通过这些配置,可以确保你的应用程序在网络通信中遵循最佳的安全实践,并且根据实际需求进行灵活的调整。

参考资料

  • Google Developers - usesCleartextTraffic

  • Google Developers - Network Security Configuration

  • Android Developers - Network Security Configuration

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/386553.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 ——— 函数指针的定义 函数指针的使用

目录 何为函数指针 打印 函数名的地址 及 &函数名的地址 函数指针的代码&#xff08;如何正确存储函数地址&#xff09; 函数指针的使用 何为函数指针 类比&#xff1a; 整型指针 - 指向整型数据的指针&#xff0c;整型指针存放的是整型数据的地址 字符指针 - 指向字…

Lc63---1859将句子排序(排序)---Java版(未写完)

1.题目描述 2.思路 &#xff08;1&#xff09;首先将句子按空格分割成若干单词。 &#xff08;2&#xff09;每个单词的最后一个字符是它的位置索引。我们可以通过这个索引将单词恢复到正确的位置。 &#xff08;3&#xff09;按照单词的索引顺序排序这些单词。 &#xff08;4…

分布式搜索引擎ES--Elasticsearch集群

1.Elasticsearch集群的概念 分片机制&#xff1a;每个索引都可以被分片 索引my_doc只有一个主分片&#xff1b;索引shop有三个主分片&#xff1b;索引shop2有5个主分片;(参考前面案例) 每个主分片都包含索引的数据&#xff0c;由于目前是单机&#xff0c;所以副分片是没有的&a…

shardingsphere的学习(二):sharingjdbc操作读写分离

简介 mysql配置读写分离以及使用shardingjdbc配置操作读写分离 读写分离 主数据库负责增删改操作&#xff08;写&#xff09;&#xff0c;从数据库负责查询操作&#xff08;读&#xff09;&#xff0c;主数据库和从数据库之间会数据同步&#xff08;主从复制&#xff09;。 …

【前端】一文带你了解 CSS

文章目录 1. CSS 是什么2. CSS 引入方式2.1 内部样式2.2 外部样式2.3 内联样式 3. CSS 常见选择器3.1 基础选择器3.1.1 标签选择器3.1.2 类选择器3.1.3 id 选择器3.1.4 通配符选择器 3.2 复合选择器3.2.1 后代选择器 4. CSS 常用属性4.1 字体相关4.2 文本相关4.3 背景相关4.4 设…

敢不敢跟我一起搭建一个Agent!不写一行代码,10分钟搞出你的智能体!纯配置也能真正掌握AI最有潜力的技术?AI圈内人必备技能

说一千道一万&#xff0c;不如实地转一转。学了那么久的AI Agent的概念了&#xff0c;是时候该落地一个Agent看看自己的掌握程度了对不对&#xff0c;我们都理解大脑是自动节能的&#xff0c;但是知识的确需要倒逼自己一把才能真的掌握&#xff0c;不瞒大家说&#xff0c;笔者对…

论文阅读:面向自动驾驶场景的多目标点云检测算法

论文地址:面向自动驾驶场景的多目标点云检测算法 概要 点云在自动驾驶系统中的三维目标检测是关键技术之一。目前主流的基于体素的无锚框检测算法通常采用复杂的二阶段修正模块,虽然在算法性能上有所提升,但往往伴随着较大的延迟。单阶段无锚框点云检测算法简化了检测流程,…

日程管理多源归一,服务场景一键直达

时间对于每个人来说都是非常宝贵的&#xff0c;曾经我们使用台历、挂历来标记和查看重要日程&#xff0c;通过翻页来见证时光的流逝&#xff0c;随着信息化时代的不断发展&#xff0c;更加灵活简洁的电子日历成为主流&#xff0c;日历也从一个最简单的日期看板&#xff0c;慢慢…

正余弦算法作者又提出新算法!徒步优化算法(HOA)-2024年一区顶刊新算法-公式原理详解与性能测评 Matlab代码免费获取

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 原理简介 算法伪代码 性能测评 参考文献 …

ruoyi vue3版本web端隐藏侧边栏及其顶部导航栏

做项目时有个需求是在web端里面嵌入一个页面全屏的大屏&#xff0c;但若依web自带的侧边栏导航和顶部导航一时还不知道怎么隐藏起来&#xff0c;于是在网上到处查找资料&#xff0c;终于&#xff0c;还是在若依的gitee文档中发现了线索 怎么隐藏侧边栏和顶部导航栏实现完全的全…

从数据时代到智能时代,星环科技信雅达联合发布金融全栈解决方案

近年来&#xff0c;星环科技与信雅达在金融行业的多个关键领域展开了广泛而深入的合作&#xff0c;推出了一系列面向金融科技领域的联合解决方案。此次合作基于星环科技在大数据、人工智能和云计算领域的先进技术&#xff0c;以及信雅达在金融领域的深厚积累&#xff0c;围绕数…

C语言程序设计(二)

四.找素数 素数&#xff1a;除了1和它本身不再有其他因数的自然数。换句话说&#xff1a;一个大于1的自然数 &#xff0c;如果只能被1和它本身整除&#xff0c;那就是素数&#xff08;质数&#xff09;。 在打印中遇到的问题就是&#xff0c;知道怎么写却总是运行不起来。主要…

Python missingno和Vaex库:高性能的大数据分析

在数据分析和处理过程中&#xff0c;数据缺失是常见的问题。处理和理解数据缺失情况是确保数据质量和分析准确性的关键步骤。Python的missingno库提供了一种便捷且直观的方式来可视化数据缺失情况&#xff0c;从而帮助我们更好地理解和处理缺失值。本文将详细介绍missingno库的…

一文看懂:数据产品的3种输出形式和4大服务层次

企业要想提升数据资产的价值&#xff0c;就必须了解数据产品。那么&#xff0c;什么是数据产品&#xff0c;我们该如何认识它&#xff1f; 在由WakeData惟客数据联合星光数智推出的直播栏目《星光对话》第5期中&#xff0c;星光数智首席数据架构师魏战松&#xff0c;分享了对于…

分布式事务解决方案(一) 2PC、3PC、TCC、Sega

目录 1.绪论 2.2PC 2.1 基本原理 2.1.1 组成 2.1.2 步骤 1.prepare阶段 2.commit阶段 2.2 2PC 存在的问题 2.2.1 阻塞问题 2.2.2 单点故障问题 1. 事务协调器宕机 2.部分数据不一致问题 2.资源管理器宕机 3. 事务协调器和资源管理管理器同时宕机 2.2 实现 2.2.1…

JCR一区级 | Matlab实现SO-Transformer-LSTM多变量回归预测(蛇群算法优化)

JCR一区级 | Matlab实现SO-Transformer-LSTM多变量回归预测&#xff08;蛇群算法优化&#xff09; 目录 JCR一区级 | Matlab实现SO-Transformer-LSTM多变量回归预测&#xff08;蛇群算法优化&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【JCR一区级】M…

跨网段 IP 地址通信故障分析

现如今计算机网络的规模和复杂性不断增加&#xff0c;跨网段通信成为网络运行中的常见需求。但如果设备处于不同网段且路由设置出现偏差时就会导致通信故障&#xff0c;严重影响网络的正常运行和数据传输。 1.跨网段通信的基本原理 跨网段通信依赖于路由器的路由功能。路由器根…

影响卫星飞行的自然因素和人为因素

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

[tomato]靶机复现漏洞详解!

靶机地址&#xff1a; https://download.vulnhub.com/tomato/Tomato.ova 靶机环境&#xff1a;Vmware 网络&#xff1a;NAT模式 信息收集&#xff1a; arp-scan -l 扫描靶机ip地址 扫描开放的端口信息 nmap -sS -sV -p- 192.168.77.135 发现开放端口21&#xff…