我只想让移动应用程序(iOS)让我HTTP_USER_AGENT
在这里使用的服务器端 PHP 脚本中的数据
$userAgent = $_SERVER['HTTP_USER_AGENT'];
它显示App Name
, CF Network Info
,Darwin OS Info
我得到了一些关于使用这个的 HTTP 传输信息的信息。但我需要更多细节。
有什么方法可以获取有关我的应用程序的更多详细信息并且只接受移动应用程序(iOS)从服务器端 PHP 脚本获取数据?
将服务器端脚本锁定到仅运行您的应用程序的移动设备的唯一体面方法是使用客户端证书验证实现 HTTPS。
除此之外,任何表明设备正在运行的东西都iOS
可以很容易地从任何设备发送出去。这里最明显的情况是在设备上运行 Safari 并从那里访问您的脚本。
我们在我们的应用程序中也遇到了这个问题。事实证明,解决方案实际上非常简单。
只有两个步骤:
1)生成一次 MD5 密钥并作为字符串存储在应用程序中(任何 MD5 密钥生成都可以)
2) 当向 Web 服务发出 POST(不要使用 GET,更安全)请求时,传递此密钥
完成此操作后,您的 Web 服务将知道该请求是从应用程序发出的。
这种方法还有一个额外的好处。
假设您有两个版本的应用程序,付费版本和免费版本,每个版本使用不同的 MD5 密钥,您可以确定发出请求的是免费版本还是付费版本。
这不是 100% 可能的,因为移动应用程序信息可以模拟到浏览器中。检查Firefox 插件。
但作为一个小检查:
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 设备。
尝试
$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
如果浏览器是从 iPhone 使用的,则返回 true。我不确定它是否适用于 iPhone 中的 chrome 等第三方浏览器。