其他
如何防止 Android 应用意外回退到明文通信方式?
当您的应用使用明文网络通信(例如 HTTP)与服务器通信时,通信将可能被第三方窃听和篡改。这可能会泄露有关您的用户的信息并敞开应用的大门,使之可能被注入未经授权的内容或遭到非法利用。理想情况下,您的应用应当仅使用安全通信,例如使用 HTTPS 取代 HTTP。此类通信受到保护,可防止遭到窃听和篡改。
许多 Android 应用已经仅使用安全通信。然而,有些应用偶尔会意外回退到明文通信方式。例如,某个服务器组件中的某个意外改动可能会导致服务器为应用提供 HTTP URL,而不是 HTTPS URL。随后,该应用会继续以明文方式进行通信,而不会有任何用户可见的提示。应用的开发者和用户可能不会觉察到这种情况。
您不必将应用的 minSdkVersion 或 targetSdkVersion 设置为 23 (Android Marshmallow),也可使用android:usesCleartextTraffic。在早期平台上,此属性会直接被忽略,因此,不会有任何影响。
请注意,WebView 尚不支持此功能。
在特定的情形下,明文通信可能仍会进出应用。例如,套接字 API 会忽略明文策略,因为它并不知道其收发的数据是否可被归类为明文。另一方面,Android 平台 HTTP 堆栈则遵从此策略,因为它们知道通信是否为明文。
Google AdMob 的设计也遵从此策略。如果您的应用声明其不使用明文通信,则只能通过该应用提供 HTTPS 广告。
建议使用第三方网络、广告和分析库,以增强对此策略的支持。它们可以通过 NetworkSecurityPolicy 类查询明文通信策略。
首先,此功能将会标记非 TLS/SSL 的安全通信。更重要的是,还可能会标记通过 HTTP 代理的 TLS/SSL 通信。这会带来问题,因为作为开发者,您无法控制应用的某个用户是否会配置其 Android 设备使用 HTTP 代理。最后,此功能并非永不过时,可能不适应未来的 TLS/SSL 协议版本。因此,此功能仅应用于开发和 QA 阶段。
在您的应用与服务器之间仅使用安全网络通信方式进行通信,是一种安全最佳做法。借助 Android Marshmallow,您可以实施这一做法,赶紧试试吧!
原文来自【Android 开发者全球博客】:
android-developers.blogspot.com
中文翻译文章【中国谷歌开发者社区论坛】(文末“阅读原文”):
chinagdg.com/thread-32313-1-1.html
6.2 Google Doodle: 2016 年意大利共和国日