我有一个Web应用程序,支持各种平台上的各种客户端,包括桌面浏览器,移动浏览器,以及移动和平板电脑本机应用程序。我想知道是否有可能以安全的方式检测 ,这些平台中的哪些平台正用于连接服务。
这将是有用的信息,并且将启用可以基于客户端平台做出安全决策的用例。例如,如果用户位于移动客户端或具有已知漏洞的浏览器上,我可以限制对服务的某些部分的访问。
我知道EFF's Panopticlick research,它使用各种基于浏览器的属性,例如用户代理字符串,安装的插件,屏幕尺寸等,为客户端建立唯一的指纹,但这不是不符合“可验证”的要求,因为所有信息都是在客户端编译的,很容易被欺骗。
我需要一个在服务器端可验证的解决方案,即客户端发送的信息是准确的。这样的解决方案是否存在?
答案 0 :(得分:1)
无法知道您正在处理哪个用户代理/平台,因为最终您可能用来识别它们的任何信息来自客户端。
用于指纹浏览器或操作系统的任何属性都可以通过向您发送不同的HTTP标头来伪造。有许多浏览器级别的HTTP标头操纵器和HTTP请求代码库正是这样做的。
因此,我强烈建议不要根据客户端的平台或用户代理做出任何安全决策。假设黑客可以违反您为此可用性而设置的任何规则。