【问题标题】:Detect if iphone/ipad connected to VPN via public wifi programmatically检测 iphone/ipad 是否以编程方式通过公共 wifi 连接到 VPN
【发布时间】:2011-07-29 07:20:28
【问题描述】:

我们有一个应用程序,其中某些功能只有在用户连接到与其帐户关联的路由器时才需要工作(我们有一些关于用户帐户和家庭路由器的信息)。 但是,用户可以通过任何公共 wifi/3g 网络与他的家庭路由器建立 VPN 连接。如果是这种情况,我们希望阻止某些功能。

关于如何使用任何现有的 iphone/ipad api 来检测它的任何想法?

谢谢, 赫塔尔

【问题讨论】:

  • 来自公共热点的 VPN 有什么问题? VPN 的全部意义在于您在这样的不安全网络上受到保护。
  • 我们的权力要求是某些功能只需要在家庭路由器上工作,而不是当您通过任何公共 wifi 或 3g 连接时。
  • 可能值得一提的是,来自公共热点的 VPN 比来自家庭热点的非 VPN 更安全。
  • 这不仅仅是安全问题。它是关于让“从任何网络”访问该功能可以让他们遇到其他问题。
  • 如果他们通过 VPN 连接到他们的家庭网络,他们就在同一个网络上,就好像他们就在家里一样。这就是它的全部意义。

标签: iphone ipad wifi vpn


【解决方案1】:

可达性 API 中有一个名为 kSCNetworkReachabilityFlagsTransientConnection 的标志。 如果您通过 VPN 连接,则为 true;如果您未通过 VPN 连接,则为 false。 我们使用这个标志值来检查我们的条件。

【讨论】:

  • 这是真的吗? kSCNetworkReachabilityFlagsTransientConnection 仅表示临时连接,例如 PPP。 WiFi 和 kSCNetworkReachabilityFlagsTransientConnection 可能是真的意味着 VPN,但我不确定 kSCNetworkReachabilityFlagsTransientConnection 总是意味着 VPN。 USB 网络共享或蓝牙 PAN 等其他奇怪的网络设置可能会设置此标志。
  • 它也意味着其他的东西,例如3G/4G 连接。但它满足了我们的要求,因为我们不必区分各种瞬态连接。我们只需要看看是否存在任何类型的瞬态连接,这对我们有用。
【解决方案2】:

没有 iOS API(至少是公开的)可以为您提供有关您是在家庭路由器还是公共 WiFi 连接上运行的信息。您只能确定您使用的是 WiFi 连接还是 3G。 (例如,参见Reachability sample

您也许可以根据设备的当前 IP 地址进行某种查找。您必须让每个用户注册他们的路由器的 IP 地址并让您的应用程序在运行之前对其进行验证,等等。但是,仍然不能保证用户的家庭路由器是安全的。换句话说,它可以像公共 WiFi 一样开放。

【讨论】:

    猜你喜欢
    • 2012-02-14
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 2015-10-21
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多