2012-11-20 27 views

回答

0

如果它总是连接到一个受控制的已知端点,那么可以在目标服务器端实现某些东西来重定向,如果它是Apache服务器,可能类似mod_rewrite。

+0

是的,它总是连接到一个已知的端点,在我的控制下使用Apache服务器......你能更具体地了解服务器端的什么/如何改变? – user1821487

+0

大量的材料 - 尝试这个例子http://www.cyberciti.biz/tips/howto-apache-force-https-secure-connections.html –

2

任何依赖服务器端重定向(从HTTP到HTTPS)的解决方案都容易受到MITM攻击(请参阅this answer)。

如果此应用中的地址是可配置的,只需将其更改为使用您的HTTPS URL。否则,您当然可以使用服务器端重定向来稍微降低风险,但这不会阻止MITM降级(可能会发生这种情况,当使用移动设备时可能会发生这种情况)。

+0

有用的链接到安全问题,但作为OP说,他无法更改客户端应用程序 –

+0

@RobCowell,我不确定HTTP:// URL是否在应用程序中进行了硬编码,或者它是否可配置。如果它是硬编码的,那么MITM证明的选项并不多。一种可能的方法是实现一个透明的代理服务器,它可以改变设备本身的URL,但我怀疑没有root设备就没有可能。 – Bruno

+0

感谢您的评论。不幸的是,url是在应用程序中硬编码的,并且在某些情况下我不会拥有应用程序的代码。 – user1821487

0

没有太多要重写。你基本上改变你的http://链接到https://这就是它。端点证书自签名或由一些不太受欢迎的CA签署时,可能会出现一些问题,但您可以轻松地将您的HttpClient替换为this one,向您的应用添加颁发者的CA,并基本上完成一个代码屏幕。

如果应用程序不是你的,并且你没有代码,那么你可以尝试通过它通过你的接入点访问网络,通过ssh隧道或VPN或其他方式透明地重新路由数据包。

如果应用程序不是你的,但你可以有代码 - 这是恕我直言最好的办法。

+0

感谢您的意见。你是正确的,应用程序不是我的,在这种情况下没有代码,也没有VPN。鉴于这种情况,我如何在没有root权限的设备上通过/重新路由它? – user1821487

+0

您无法直接在设备上。你需要在你的路由器/接入点上设置隧道 - android不会知道它是隧道的 –

+0

好的。因此,在这种情况下,android应用程序如何知道它必须使用服务器进行身份验证,并使用存储在cert中的私钥/公钥对加密数据? – user1821487

相关问题