是否可以从移动用户代理中提取任何可以唯一标识设备的信息?
如果可能的话,我正在尝试使用PHP创建一个页面,它会识别我从iPhone上访问它的人。接下来的其他声明根本不会显示任何内容。
答案 0 :(得分:3)
您可以使用下一个变量:
$_SERVER['HTTP_USER_AGENT']
是:
这是一个字符串,表示正在访问的用户代理 页
你可以像这样使用它:
if( strstr($_SERVER['HTTP_USER_AGENT'],'Android') ) //Android
{
}
elseif( strstr($_SERVER['HTTP_USER_AGENT'],'iPhone')) //iphone
{
}
else
{
}
答案 1 :(得分:1)
如果您使用手机附带的“开箱即用”浏览器,则不可能唯一根据用户识别您的设备仅代理字符串。
User-Agent string仅标识您正在使用的浏览器的类型,版本和详细信息。由于数千或数百万人可能正在使用这种完全相同的浏览器,因此它并不是唯一的,因此对于安全授权令牌来说是一个非常糟糕的选择。
例如,Samsung Galaxy S3的用户代理字符串是:
Mozilla / 5.0(Linux; U; Android 4.0.4; en-gb; GT-I9300 Build / IMM76D) AppleWebKit / 534.30(KHTML,与Gecko一样)Version / 4.0 Mobile Safari浏览器/ 534.30
这描述了浏览器的构建信息和兼容性,但仅对安装在数千或数百万台设备上的构建而言是唯一的。
因为用户代理字符串没有什么独特之处,所以我建议不要使用它来提供任何级别的安全性。至少我建议实现HTTP基本身份验证。确保在使用HTTP基本身份验证时启用SSL,因为您的用户名和密码是以HTTP编码的方式发送但未加密且容易被截获。
如果您要保护需要真正安全保障的网站,我建议您不要尝试“推出自己的”身份验证方案,除非您是安全专家。我建议使用安全框架,例如OWASP's ESAPI或其他经过良好测试的框架。在构建身份验证系统时,有很多方法可以解决问题,因此最好在将其部署到生产环境之前使用经过全面测试的方法。
答案 2 :(得分:0)
我在几个项目中使用了this。它可能会因您的需求而过于膨胀,但您可以排除浏览器检测不需要的功能。
除了检测浏览器外,它还会检测版本。