【发布时间】:2012-11-20 17:36:15
【问题描述】:
我面临的挑战是将使用 HTTP 连接的 android 应用程序转换为 HTTPS 连接而不重写代码?
在没有 root 访问权限的设备上实现上述挑战有哪些可用选项?
【问题讨论】:
我面临的挑战是将使用 HTTP 连接的 android 应用程序转换为 HTTPS 连接而不重写代码?
在没有 root 访问权限的设备上实现上述挑战有哪些可用选项?
【问题讨论】:
任何依赖服务器端重定向(从 HTTP 到 HTTPS)的解决方案都容易受到 MITM 攻击(请参阅this answer)。
如果此应用中的地址是可配置的,只需将它们更改为使用您的 HTTPS URL。
否则,您当然可以使用服务器端重定向来稍微降低风险,但这并不能防止降级 MITM 攻击(这种情况可能会发生,在使用移动设备时可能更是如此)。
【讨论】:
http:// URL 是否在应用程序中进行了硬编码,或者它是否可以配置。如果它是硬编码的,那么就没有多少可以防 MITM 的选项了。一种可能的方法是实现一个透明代理,该代理会更改设备本身的 URL,但我怀疑在不植根设备的情况下这是可能的。
如果它始终连接到您控制的已知端点,您可以在目标服务器端实现一些东西来重定向,如果它是一个 Apache 服务器,也许像 mod_rewrite 之类的东西。
【讨论】:
没有什么可重写的。您基本上将您的http:// 链接更改为https://,仅此而已。当端点的证书是自签名或由一些不太流行的CA签名时可能会出现一些问题,但是您可以轻松地将您的HttpClient替换为this one,将颁发者的CA添加到您的应用程序中,基本上只需一屏代码即可完成。
如果应用程序不是您的并且您没有代码,那么您可以尝试通过隧道使其通过您的接入点访问网络,这将通过 ssh 隧道或 VPN 或其他任何方式透明地重新路由数据包。
如果应用不是您的,但您可以拥有代码 - 恕我直言,这是最好的选择。
【讨论】: