我正在编写一个Android库,它是HTTPS端点的REST API客户端。应用程序将使用此库来抽象访问REST服务。
我希望使用证书固定和明文选择退出来保证我的流量安全,但我不想阻止消费应用与其他服务交谈或管理自己的安全配置。我想确保即使应用程序设置错误并与其他服务进行不安全通信,来自我的库的所有流量也始终是安全的。 (要明确的是:我并不担心恶意应用程序试图读取我的网络流量。我只是担心写得不好应用程序破坏我的安全策略并接受错误的HTTPS连接,从我的Web服务中公开用户数据。)
图书馆作为AAR提供。如果它有所作为,我使用OkHttp3作为我的HTTP客户端。一个额外的复杂性:我需要minSdkVersion
21,所以要使用网络安全配置,无论如何我都必须使用CommonsWare's backport。
对我来说,为我的图书馆设置网络安全策略的最简单方法是什么,该策略无法被应用程序破坏,并且不会影响应用程序的其他流量?
答案 0 :(得分:1)
无法确保嵌入图书馆的应用不会弄乱图书馆使用的网络流量。原因是Android应用程序沙箱不区分应用程序和该应用程序中嵌入的库。他们的代码在同一个进程中运行,他们可以访问(读/写)彼此的状态,他们共享全局状态(例如,默认的SSLSocketFactory,HostnameVerifier和X509TrustManager),等等。
您可以做的最好的事情是假设应用程序开发人员不是恶意的,并向他们提供有关添加到其应用程序的网络安全配置中的内容的指导,以保护您的图书馆发出的流量。