【发布时间】:2013-01-08 15:29:13
【问题描述】:
是否可以从移动用户代理中提取任何信息来唯一标识设备?
如果可能,我正在尝试使用 PHP 创建一个页面,该页面可以识别是我从我的 iPhone 访问它。要遵循的其他声明根本不会显示任何内容。
【问题讨论】:
标签: php mobile user-agent
是否可以从移动用户代理中提取任何信息来唯一标识设备?
如果可能,我正在尝试使用 PHP 创建一个页面,该页面可以识别是我从我的 iPhone 访问它。要遵循的其他声明根本不会显示任何内容。
【问题讨论】:
标签: php mobile user-agent
你可以使用下一个变量:
$_SERVER['HTTP_USER_AGENT']
这是:
这是一个字符串,表示正在访问的用户代理 页面
你可以这样使用它:
if( strstr($_SERVER['HTTP_USER_AGENT'],'Android') ) //Android
{
}
elseif( strstr($_SERVER['HTTP_USER_AGENT'],'iPhone')) //iphone
{
}
else
{
}
【讨论】:
如果您使用的是手机附带的“开箱即用”浏览器,那么不可能唯一根据用户识别您的设备-单独的代理字符串。
User-Agent string 仅标识您正在使用的浏览器的类型、版本和详细信息。由于可能有成千上万的人使用这个完全相同的浏览器,因此它不是唯一的,因此对于安全授权令牌来说是一个非常糟糕的选择。
例如,三星 Galaxy S3 的用户代理字符串是:
Mozilla/5.0(Linux;U;Android 4.0.4;en-gb;GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
这描述了浏览器的构建信息和兼容性,但仅适用于安装在数千或数百万台设备上的构建。
因为用户代理字符串没有什么真正独特的地方,所以我建议不要使用它来提供任何级别的安全性。至少我建议实施 HTTP 基本身份验证。使用 HTTP 基本身份验证时请务必启用 SSL,因为您的用户名和密码以 HTTP 编码但未加密发送,容易被拦截。
如果您要保护需要真正安全保证的网站,我建议您不要尝试“推出自己的”身份验证方案,除非您是安全专家。我建议使用安全框架,例如OWASP's ESAPI,或其他经过充分测试的框架。在构建身份验证系统时,有很多方法会出错,因此最好在将其部署到生产环境之前使用已经过全面测试的方法。
【讨论】:
我在几个项目中使用了this。可能对你的需求来说太臃肿了,但是你可以排除你不需要的浏览器检测功能。
除了检测浏览器,它还检测版本。
【讨论】: