博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[译] 在 Android P 中使用默认的 TLS 来保护你的用户
阅读量:7089 次
发布时间:2019-06-28

本文共 1817 字,大约阅读时间需要 6 分钟。

  • 原文地址:
  • 原文作者:
  • 译文出自:
  • 本文永久链接:
  • 译者:
  • 校对者:

在 Android P 中使用默认的 TLS 来保护你的用户

攥写自 Chad Brubaker,Android 安全部门高级软件工程师。

Android 一直致力于保护其用户,用户的设备以及用户数据的安全。其中一种我们保持数据安全的方式是让所有进入或离开 Android 设备的数据通过安全传输层(TLS)来通信。如同我们在 Android P 预览版中的一样,我们正在通过阻止目标为 Android P 的应用在默认情况下允许未加密的连接这一行为来进一步改进这些保护措施。

伴随着多年来我们为了更好地保护 Android 用户所做出的改变。为了防止意外的非加密连接,我们在 Android Marshmallow 中引入了新的 manifest 属性 android:usesCleartextTraffic。在 Android Nougat 中,我们通过创建 来扩展了这个属性,用来表明 app 并没有使用加密网络链接的倾向。在 Android Nougat 和 Oreo 中, 我们仍然允许明文传播。

如何更新我的 APP 呢?

如果你 app 的所有网络请求已经使用上了 TLS,那么你什么都不用做。但如果不是,你则是需要使用 TLS 来加密你所有的网络请求。如果你仍然需要发起明文传输的请求,继续往下读读看吧。

为什么我需要使用 TLS 呢?

Android 系统认为所有网络都可能是具有敌意的,因此应始终使用加密流量。移动设备则是更加容易受到攻击,因为它们经常性地链接到许多不同的网络,比如咖啡店的 Wi-Fi。

所有的网络传输都应该被加密,无论它们传输的何种内容,因为任何未加密的连接都可能被攻击并被注入额外内容,让潜在拥有脆弱防护性能的客户端代码更能够被多点击破,或是用来跟踪用户。如要获取更多的讯息,请查看我们之前的文章 和 。

TLS 会很慢吗?

如何在我的 APP 中使用 TLS?

一旦你的服务器端支持了 TLS,你只要简单地将 App 和服务器响应的 URL 从 http:// 改变成 https://。你的 HTTP 堆栈将会自动地处理好相关事宜。

如果你需要自己处理套接字,请使用 [SSLSocketFactory] 而不是 [SocketFactory]。请一定要特别注意正确地使用套接字,因为 [SSLSocket] 没有提供主机名的验证。你的 APP 需要自己来处理主机名验证,最好通过调用 [getDefaultHostnameVerifier()] 来处理主机名。而是,当你调用 时一定要谨慎,它没有抛出任何异常或者错误,相反它返回了一个需要明确检查值的布尔值结果。

我还是需要使用明文传输...

当然你真的应该在所有链接中使用 TLS,但有可能由于历史原因你还是需要使用明文传输,比如连接上一台无人维护的老旧服务器。要这样做,你需要配置 APP 的网络安全设置来允许这些连接。

我们已经有了一些这样的范例配置。请查看 来获得更多的帮助。

允许特殊的域名使用明文传输

如果您需要允许连接到特定域名或一组域名,可以使用以下配置作为指导:

insecure.example.com
insecure.cdn.example.com
复制代码

允许连接到任意不安全的域名

如果您的应用支持通过不安全连接从 URL 打开任意内容,你只需设置与自己的服务器通信时才使用加密传输。时刻记住,小心处理你从非安全连接得到的数据,它们可能已经在传输过程中被篡改。

example.com
cdn.example2.com
复制代码

如何更新我的库呢?

如果你使用的库直接地创建了安全或者非安全的连接,确保它们在发起任意明文传输请求前调用过 来检查其行为可行性。


是一个翻译优质互联网技术文章的社区,文章来源为 上的英文分享文章。内容覆盖 、、、、、、、等领域,想要查看更多优质译文请持续关注 、、。

转载地址:http://imbql.baihongyu.com/

你可能感兴趣的文章
[转]python-元类
查看>>
复习日记-Listener/filter/servlet3.0/动态代理
查看>>
Win7x64安装了DroidPilot-Win64.exe之后跑不起来 -- 解决办法
查看>>
VS2010 中C++ 和C# 颜色转化
查看>>
java 自带的工具
查看>>
CentOS 7配置MariaDB允许指定IP远程连接数据库
查看>>
计算机基础——指令与程序
查看>>
用三段 140 字符以内的代码生成一张 1024×1024 的图片<转载>
查看>>
HTML CSS
查看>>
sqlserver存储过程中SELECT 与 SET 对变量赋值的区别
查看>>
【分享】开源富文本编辑器之间的较量
查看>>
logback的使用和logback.xml详解
查看>>
Android Studio -- 关联源码
查看>>
leetcode Majority Element
查看>>
去除sql的前后半角全角空格
查看>>
图片在容器里水平垂直居中
查看>>
015PHP文件处理——文件处理flock 文件锁定 pathinfo realpath tmpfile tempname
查看>>
关系型数据库之MySQL
查看>>
算法笔记-二叉树
查看>>
编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,并输出计算结果总是100的所有可能性。...
查看>>