【问题标题】:How to accept only Mobile App (iOS) to let data from a PHP Script?如何只接受移动应用程序(iOS)来让来自 PHP 脚本的数据?
【发布时间】:2012-08-23 15:57:47
【问题描述】:

我只想让移动应用程序 (iOS) 让来自我的服务器端 PHP 脚本的数据 我在这里使用HTTP_USER_AGENT

$userAgent = $_SERVER['HTTP_USER_AGENT'];

显示App Name、CF Network Info、Darwin OS Info

我使用this 获得了一些关于HTTP 传输信息的信息。但我需要更多细节。

有什么方法可以获取有关我的应用程序的更多详细信息并且只接受移动应用程序 (iOS) 从服务器端 PHP 脚本获取数据?

【问题讨论】:

  • 您是否尝试将此作为安全功能来实现?我不知道有任何验证设备正在运行的 iOS 不能很容易地被欺骗......

标签: php ios http


【解决方案1】:

这不是 100% 可能的,因为移动应用信息可以模拟到浏览器中。检查Firefox Plugins。

但作为一个小检查:

function isMobileiOS($useragent){
    if(stripos($useragent, 'iPod') !== false || stripos($useragent, 'iPhone') !== false || stripos($useragent, 'iPad') !== false){
        return true;
    }
    return false;
}

$mobile = isMobileiOS($_SERVER['HTTP_USER_AGENT']);

这将捕获 iOS 设备。

【讨论】:

    【解决方案2】:

    试试

    $iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
    

    如果浏览器是从 iPhone 上使用的,则返回 true。我不确定它是否适用于 iPhone 中的 chrome 等第三方浏览器。

    【讨论】:

      【解决方案3】:

      关于将服务器端脚本锁定到仅运行您的应用的移动设备的唯一体面方法是实现HTTPS with client certificate validation。

      除此之外,任何表明设备正在运行iOS 的信息都可以轻松地从任何设备发送。最明显的情况是在设备上运行 Safari 并从那里访问您的脚本。

      【讨论】:

        【解决方案4】:

        我们在我们的应用程序中也遇到了这个问题。原来解决方案其实很简单。

        只有两个步骤:

        1) 生成一次 MD5 密钥并作为字符串存储在应用程序中(任何 MD5 密钥生成都可以)

        2) 向 Web 服务发出 POST(不要使用 GET,更安全)请求时,传递此密钥

        完成此操作后,您的网络服务将知道该请求是从应用发出的。

        这种方法还有一个额外的好处。

        假设您有两个版本的应用,付费版本和免费版本,每个版本使用不同的 MD5 密钥,您可以确定是免费版本还是付费版本发出请求。

        【讨论】:

        • +1 因为它确实提供了限制访问的基本机制。它可能需要 SSL 才能更安全,然后您不得不质疑有人反编译您的移动应用程序以获取 MD5 密钥是多么容易。无论如何,如果您只是想减少对数据的猖獗使用,但确定黑客仍然可以得到它,那么这是一个很好的解决方案,所以如果这是您采用的解决方案,我不会在您的数据中放置任何过于敏感的内容。
        猜你喜欢
        • 2021-11-05
        • 2014-05-10
        • 2017-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-11
        • 1970-01-01
        • 2015-12-23
        相关资源
        最近更新 更多