Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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 在JS或Node.JS中是否有检查浏览器的简单方法?_Javascript_Node.js_Security_Browser_Cross Browser - Fatal编程技术网

Javascript 在JS或Node.JS中是否有检查浏览器的简单方法?

Javascript 在JS或Node.JS中是否有检查浏览器的简单方法?,javascript,node.js,security,browser,cross-browser,Javascript,Node.js,Security,Browser,Cross Browser,我有一个网站,我想禁止所有不使用chrome和衍生品、firefox和衍生品、safari或新版opera的用户(IE和其他旧浏览器可能会损害安全性)。在客户端或服务器端,是否有一种绝对简单的方法(即使是黑客也无法欺骗他们的浏览器)用JavaScript实现这一点?不,这是不可靠的。您可以使用一些复杂的JavaScript计时运行,并将测试库的执行时间与每个浏览器和版本的已知计时进行比较。显然,这必须在比率的基础上进行测试,以排除硬件性能的差异。然而,这并不是万无一失的,它要求每个浏览器版本都具

我有一个网站,我想禁止所有不使用chrome和衍生品、firefox和衍生品、safari或新版opera的用户(IE和其他旧浏览器可能会损害安全性)。在客户端或服务器端,是否有一种绝对简单的方法(即使是黑客也无法欺骗他们的浏览器)用JavaScript实现这一点?

不,这是不可靠的。您可以使用一些复杂的JavaScript计时运行,并将测试库的执行时间与每个浏览器和版本的已知计时进行比较。显然,这必须在比率的基础上进行测试,以排除硬件性能的差异。然而,这并不是万无一失的,它要求每个浏览器版本都具有“指纹”性能,并使您能够接受,并且在发布每个新的浏览器版本时需要不断更新。这不是一个万无一失的方法,通常被认为是一个非常糟糕的主意。它还可能导致误报,这将导致使用兼容浏览器的用户由于JavaScript指纹测试的变化而被拒绝访问


强化服务器是一种更好的方法,使用简单的浏览器标识符(如navigator name)将提供所需的结果。试图设计一个万无一失的方法的麻烦在于,即使你让它工作起来,一个狡猾的黑客仍然可以让你。强化服务器是保护站点安全的唯一真正方法。

这是一种糟糕的安全方法

您不应该指望用户是通过特定浏览器访问您的站点。相反,您应该选择允许这些兼容浏览器使用功能,并通过签名(浏览器发送的有助于识别特定浏览器类型的部分)将其禁用给其他浏览器


最重要的是,不要在应用程序中留下漏洞如果您知道这是不同浏览器类型中的漏洞,请修复该问题-不要试图隐藏它。人们总是能找到一种解决隐藏问题的方法。容易解决?让它没有问题隐藏

确保服务器已加固。这是唯一的防御。你无法控制任何客户端。答案是“否”。如果某个特定的浏览器会危害你网站的安全性,那么即使你禁止它,你也无法恢复该安全性。这表明用户很容易接触到该漏洞,这反过来意味着任何人都可以利用该漏洞,即使他们使用的是“经批准”的浏览器。这听起来像是XY问题。问题是旧的IE版本不支持cookie安全性(特别是httpOnly),我不知道如何解决这个问题。@IsAckrementsov-除非您允许第三方、恶意和不受信任的Javascript从外部来源进入您的网页,你对http只给你买什么有点误解。如果cookie在传输过程中受到https的保护,那么从用户浏览器中捕获cookie的唯一方法就是在用户计算机上运行恶意工具。而且,如果他们有这样一个运行的工具,那么cookies无论如何都可以从浏览器存储中获取。你担心什么样的攻击,你认为为了安全你必须使用
httpOnly
?我可以把它加载到Fiddler/Charles上,看看有什么被发送回来,然后把它放到我的请求中。。。。这不会有任何区别。问题在于cookies,而不是实际的服务器端代码。我想让Cookie只能由服务器读取(虽然很难按原样读取Cookie,但这将使安全防弹,除非黑客获得对我的服务器的访问权)。