Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于特征的安全浏览器检测_Javascript_Browser Detection - Fatal编程技术网

Javascript 基于特征的安全浏览器检测

Javascript 基于特征的安全浏览器检测,javascript,browser-detection,Javascript,Browser Detection,我一直在做一些关于安全可靠的浏览器检测的研究。考虑到解析navigator.userAgent是最糟糕的方法,因为它很容易被用户欺骗,所以最好的选择似乎是使用功能检测。因此,根据StackOveflow和其他地方的各种文章,这是它最后的样子: IE: /*@cc_on!@*/false Firefox: -moz-box-sizing Safari: window.getComputedStyle && !window.globalStorage && !wind

我一直在做一些关于安全可靠的浏览器检测的研究。考虑到解析
navigator.userAgent
是最糟糕的方法,因为它很容易被用户欺骗,所以最好的选择似乎是使用功能检测。因此,根据StackOveflow和其他地方的各种文章,这是它最后的样子:

IE: /*@cc_on!@*/false
Firefox: -moz-box-sizing
Safari: window.getComputedStyle && !window.globalStorage && !window.opera
Opera: window.opera && window.opera.version
Chrome: window.chrome
考虑到这些将在浏览器的未来版本中进行维护和监控(当一个浏览器可能会禁用我们现在用来检测它的功能,或者其他浏览器可能会实现它,因此该浏览器的测试也会返回true),这种方法中是否有任何警告?用户是否可以以任何方式执行某些操作,以便即使这些操作也会返回错误的结果

这些方法是否有任何警告?用户是否可以以任何方式执行某些操作,以便即使这些操作也会返回错误的结果

好吧,你得考虑两件事。首先,根据浏览器的不同,可能需要一个ID。其次,不能相信前缀是特定于浏览器的。正如其他用户在评论中指出的那样,我建议改用特征检测(您所做的是相关推理)


顺便说一句,你的Safari过滤器不可靠。

IE检测可以用
完成。你试过了吗?检测功能,而不是浏览器。是的,这不能解决我的问题。某些功能在say Opera中存在,但与其他浏览器不同。因此,在这种情况下,功能检测将不起作用(因为它存在,只是它需要不同的实现)。检测功能,如果存在,但已知有不同的实现,请执行基本的实现测试,存储在
localStorage
,现在您知道,直到用户清除存储。-如果一个浏览器实现了一些不同的东西,你不能相信它将来会不符合。我不太明白你的意思。我所做的是功能检测,对吗?@Cupidvogel你在根据功能推断某个浏览器。按照惯例,特征检测意味着你正在检查特征本身。好的。但这是必要的,因为不同的浏览器可能会以不同的方式实现相同的功能。因此,功能检测不会有帮助。@Cupidvogel只是当时的最后手段。我回答你的问题了吗?