NoScript:如何确定将哪些站点/脚本列入白名单?

信息安全 网页浏览器 javascript 防御
2021-08-29 05:59:56

NoScript 是一个很棒的插件,既可用于安全性,也可用于广告拦截。但是,我发现在某些页面上需要允许哪些脚本才能使用我想要的功能同时仍然阻止不必要的脚本并不总是那么容易。很多时候,仅仅为您正在访问的站点的域打开脚本是不够的。

例如,要充分利用 StackExchange,我必须启用以下脚本:

  • stackexchange.com
  • googleapis.com
  • 静态网

过去,我通常只是通过反复试验才弄清楚这一点。然而,这绝对不是它应该做的方式。这让我很容易在试错阶段仍然可能运行恶意或广告脚本,这可能导致无法恢复的损害。

大多数情况下,当我想在网站上使用某个功能但脚本由不同的域托管时,就会出现这个问题。我通常首先启用“通常的嫌疑人”,例如 domain.tld、domaincdn.tld、domain-images.tld。不过,这并不总是有效。而且,除此之外,我确实没有直观的方法(除了运行 WHOIS 查询并信任这些结果)来确定 domain-images.tld 由运行 domain.tld 的同一个人拥有和控制,或者它的脚本实际上提供了我想要的任何功能。

是否有其他插件或其他方法可用于确定哪些域/脚本需要列入白名单才能使用网站的某些功能?优选地,该方法不应要求任何脚本语言的知识或要求用户解释站点的源代码。

我对“理想”解决方案的概念是一个插件,它允许我右键单击任何交互式页面元素(按钮、超链接、flash 对象等)并查看承载该元素执行其功能所需的脚本的站点列表. 它还应该允许我右键单击页面中的空白位置,并查看哪些域托管影响页面布局和格式的脚本。

这个问题是本周的 IT 安全问题
阅读 2011 年 9 月 2 日的博客文章了解更多详情或提交您自己的本周问题。

3个回答

您可以安装站点顾问插件,例如McAfee 的站点顾问通过这样做,您可以更轻松地在域中搜索任何报告的恶意行为。

例如,我搜索了一个大报纸正在从其中添加内容的域,我得到的报告说一般都可以,但社区报告说“广告软件、间谍软件或病毒 (1)”。

我敢肯定,还有更多可能更好的插件用于搜索域以获取其评级。

编辑:我想添加从NoScript 的常见问题解答中找到的这个片段:

从版本 1.9.9.61 开始,NoScript 提供了一个“站点信息”页面,可以帮助您评估 NoScript 菜单中显示的网站的可信度。您可以通过单击中键或按住 Shift 键单击相关菜单项来访问此服务。如果您更偏向于技术方面,并且想在允许之前检查 JavaScript 源代码,您可以使用 JSView 帮助自己。

因此,如果您想知道是否应该信任它,只需中键单击该域,它将查询以下站点以获取信息:

  • WOT记分卡
  • McAfee SiteAdvisor®
  • 站长提示 网站信息
  • google-analytics.com 上的安全浏览诊断

[披露:我是本答案中讨论其产品的公司的联合创始人。]

过去,我通常只是通过反复试验才弄清楚这一点。然而,这绝对不是它应该做的方式。这让我很容易在试错阶段仍然可能运行恶意或广告脚本,这可能导致无法恢复的损害。

这是基于白名单的安全产品的问题。您真的无法确定添加到列表中的每个项目。您只需尝试一下,并希望获得最好的结果。即使您将域列入白名单,也可以将新脚本添加到该域,或者可以更改现有脚本。为了完全确定,您需要在执行之前分析每个脚本以查找恶意活动。我不相信有一个通用的脚本分析程序可以查看每个脚本并确定它是否安全。

是否有其他插件或其他方法可用于确定哪些域/脚本需要列入白名单才能使用网站的某些功能?优选地,该方法不应要求任何脚本语言的知识或要求用户解释站点的源代码。

虽然不完全符合您的要求,但我的公司构建了一个类似的安全插件来解决您的问题,但方式不同。我们运行页面所需的所有脚本,但我们在一次性云服务器上运行它们。这会导致用户获得网站的全部功能,而无需将任何脚本列入白名单,也无需在其本地计算机上运行任何脚本。这使用户无需了解脚本语言或要求他们解释站点的源代码。从本质上讲,脚本的好坏并不重要,因为通过在我们的服务器上运行它们,它们不会影响您的计算机。

如果您有兴趣,可以在我们的网站上了解更多信息。

我怀疑“正确”的答案是对 HTML 进行扩展,其中网站本身声明哪些域在其直接控制之下,哪些是第三方脚本(例如 Stack Exchange 将声明 stackexchange.com、sstatic.net在直接控制下,googleapis.com 作为重要的第三方网站,而其他网站则作为广告网站)。

这可能看起来很奇怪 - 毕竟,NoScript 的全部意义在于您首先不信任该站点 - 但是当您允许来自站点本身的脚本时,您已经决定信任(例如) Stack Exchange你只想指定它信任的所有域。

显然,一个网站可以撒谎并列出它处理的所有广告网站作为其内部结构的一部分,但 NoScript 的 UI 必须让你知道你在做什么。

请注意,提出对 HTML 的扩展并不完全是解决您的问题的实用方法!