在JavaScript中是否可能检测到Internet Explorer增强安全配置?

7

有没有一种方法可以通过javascript判断浏览器是否启用了“增强安全配置”?

我经常遇到某些控件在动态加载的内容中无法正常工作的问题。这只发生在运行在Windows Server 2003/2008系统上的浏览器中,即使我将服务器添加到“受信任”的区域中也是如此。

也许有人已经开发出了实现此任务的方法?

提前感谢!

4个回答

3

我们可以测试IE ESC的效果,而不是直接测试它。

我发现启用ESC后,动态添加内容的onclick事件不会触发。 所以我直接测试这些事件。

var IEESCEnabled = true;
var testButton = $("<button style=\"display: none;\" onclick=\"IEESCEnabled = false; alert('No problems here.');\">Test IE ESC</button>");
testButton.click();
if (IEESCEnabled) {
    alert("We have a problem.");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

在我的应用程序中,像这样的测试会将用户转到一个页面,解释他们的问题。它伴随着一个noscript元素来检查他们是否完全运行JavaScript。

1

我认为这是不可能的,如果还存在这种情况,那么这可能是一个漏洞,迟早会被修复。

这种“额外安全性”的主要目的之一是让客户端拥有它,但不被服务器检测到,从而使它们无法知道何时尝试规避它以及何时不需要。


我认为你可以很容易地检测到至少一些症状(脚本/ActiveX被禁用),至少在第一次请求之后。我不认为这是一个错误。 - Ben Schwehn

1

使用增强安全配置时,JavaScript 不是被禁用了吗?

那么,如果你只想向用户显示一条消息,只需在普通的 HTML 中显示消息,并用 JavaScript 隐藏它,这样只有没有启用 JavaScript 的用户才能看到。如果你需要在服务器端处理(例如输出不同版本的网站),只需包含 JavaScript 重定向用户到启用 JavaScript 的版本。没有启用 JavaScript 的用户将保持在非 JS 页面上。

如果只禁用了可脚本化的 ActiveX,同样的方法适用,只需插入一个 ActiveX 并尝试“脚本化”它,如果失败,可以重定向、显示消息等等。

当然,上述方法并不能直接检测增强安全配置本身,但却能检测到启用增强安全配置时出现的症状。因此,它可能无法区分使用增强安全配置的用户与仅禁用了 JS/ActiveX 或首先使用不支持脚本的浏览器的用户。


0

不幸的是,那并不能解决问题。根据微软的说法:http://msdn.microsoft.com/en-us/library/ms537503%28VS.85%29.aspx字符串“SV1”仅被Internet Explorer 6使用。在几台机器上进行快速测试似乎证实了这一点。 - Hanno Bunjes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接