NoScript

NoScript 是一个为 Mozilla Firefox 和 Mozilla Application Suite网页浏览器 （诸如Flock、SeaMonkey等） 所开发的自由的扩展（Add-ons）。NoScript 以白名单选择性执行 JavaScript、Java、Flash、Sliverlight 以及其它插件和脚本内容。NoScript What is it?  NoScript.net

 特点 
 安全和使用方法 
在安装之后，JavaScript、Java、Flash、Sliverlight和其它可执行内容都会被Firefox默认阻止。用户可以手动允许这些内容。NoScript Features-Usable security  NoScript.net
NoScript会在Firefox中占据一个工具栏图标或是一个状态栏图标，并显示正在浏览的页面上每个站点的内容被阻止或允许的情况，同时也可以修改之前阻止或允许的内容。

 站点匹配和白名单
对于每个页面，可以选择允许特定的地址，特定的域名或是根域名并执行它的内容。同时，允许一个域名之后（例如, mozilla.org），它的所有二级域名都会被默认允许（例如 www.mozilla.org, addons.mozilla.org 等等）而且与协议无关（例如HTTP和HTTPS）。而允许一个地址之后（协议:主机 例如），它的所有子目录都会被允许 （例如和），此时它的根域名和以及其它二级域名不会被允许。因此，mozilla.org和addons.mozilla.org就不会被自动允许。NoScript Features-Site matching  NoScript.net

 黑名单 
页面也可以在NoScript中被列入黑名单。把一个页面列入黑名单不仅会阻止执行脚本内容，同时还会去掉手动执行这些内容的选项。NoScript Features-Untrusted blacklist  NoScript.net即使安全設定低於預設值，NoScript還是可以阻擋一些網頁攻擊，例如DNS重新綁定攻擊。

 反XSS防护 
2007年4月11日，NoScript 1.1.4.7版公开发布NoScript's first Anti-XSS release Mozilla Add-ons  Mozilla Add-ons，新增了一个客户端的保护，针对类型0和类型1的XSS攻击。一旦一个页面试图将HTML或是JavaScript代码插入另一个页面，NoScript就会过滤掉有害请求。NoScript Features-Anti-XSS protection  NoScript.net

 强制HTTPS转换 
2008年9月15日，NoScript 1.8.1版公开发布Force SSL HTTPS Connections In NoScript  NoScript.net，使得用户可以强制某些网站必须通过https访问，增加安全性。此外NoScript也可以强制https网站把cookies加密来阻止cookies劫持。What can NoScript do against HTTPS cookie hijacking?   NoScript.net
2009年9月23日，NoScript 1.9.8.9版增加了对HSTS的支持。这一功能使得用户在访问支持的网站（例如，PayPal）的时候自动只通过HTTPS访问，以防止中间人攻击。Strict Transport Security in NoScript 

 默认阻止一切 
NoScript的默认行为是阻止所有不在白名单中的脚本。这可能使大量依赖于JavaScript技术，例如AJAX的页面无法正常工作。不熟悉的用户也许会觉得相比起增加的安全保护而付出的麻烦不值得。

但同时NoScript也支持一个可选的黑名单模式：用户可以选择全局启用JavaScript然后禁止他们不信任的站点。即便如此配置，NoScript仍然能在很大程度上增强安全性，由于仍然具有XSS、CSRF和点击劫持等防护功能。

 内置的白名单 
, NoScript的白名单默认包含了扩展作者的部分域名，一些Google的域名（包括一个必要的用于显示Google Adsense广告的域名），雅虎以及微软，由于这些使用了AJAX的Web邮件服务可能是某些用户唯一熟悉的使用邮件方式，如果不这样做，这些用户就会在安装NoScript之后无意地把他们自己锁住。这个白名单是可以修改的。

 奖项 
NoScript被PC World杂志评为2006年百大最佳产品之一。PC World Award  pcworld.com

评论
 和Adblock Plus的争端 
2009年5月1日，Firefox扩展Adblock Plus的作者Wladimir Palant，宣布一周之前的NoScript 1.9.2版开始妨碍Adblock Plus正常工作。NoScript会在未经Adblock Plus和用户允许的情况下解析并显示赞助商页面。Palant说NoScript使用了代码混淆来逃避十六进制代码层面对这个修改的检测。几乎同时，Mozilla因此次事件决定修改社区准则。4月30日，NoScript升级到1.9.2.3，把传说中的代码混淆改为了一个用户可见的特性，即NoScript在Adblock Plus的过滤规则中将自己的网站设置为白名单。Wladimir Palant指出这个过滤规则即便被用户删除也会在每次启动的时候自动添加回去，不过这看起来似乎只是个无意的Bug，因为白名单同时也可以被永久禁止或是如NoScript FAQ所说，被用户自己的过滤规则覆盖。 Some hours later, on May 2, 2009, a further automatic NoScript update (version 1.9.2.6) completely removed the Adblock Plus whitelist, and public apologies were given on the release notes page for having modified Adblock Plus' behavior without asking users' consent in advance.几小时之后，2009年5月2日，自动更新的NoScript 1.9.2.6版彻底移除了这一白名单，并在发行记录中对没有在用户事先允许的情况下修改Adblock Plus功能的行为作出公开道歉。2009年5月4日，在博客上一篇长文中，NoScript的作者Giorgio Maone以个人身份对最初含糊的说法表达了歉意，认识到这是破坏了信任关系并对此表示后悔。他同时解释NoScript添加的Adblock Plus白名单是对EasyList反常性“攻击”的对抗，这些攻击针对Manoe的网站，并几乎破坏了页面所有的动态功能，甚至是安装NoScript软件包的链接。

 NoScript网站和Ghostery扩展的冲突 
2009年5月1日NoScript support forum  "Re: Latest NoScript version (1.9.2) breaks Adblock Plus", comment #3133, Guest (2009-05-01)以及2009年5月3日NoScript support forum  "Re: Latest NoScript version (1.9.2) breaks Adblock Plus", comment #3610, Curious Inquiry (2009-05-03)在讨论NoScript对Adblock Plus的修改时，有人在NoScript支持论坛中指出NoScript官网上有一个CSS规则不停让Ghostery这个Mozilla扩展弹出提示，表示网页上有奇怪而隐蔽的"bug"。Ghostery也会提示用户Manoe网站上Google Adsense的使用。Manoe在回应中宣称他的CSS没有做出这些，Ghostery的提示是由于其自身的技术问题，同时这些提示看起来很糟糕而且妨碍了网页真实效果的展示。NoScript support forum  "Re: Latest NoScript version (1.9.2) breaks Adblock Plus", comment #3133, Giorgio Maone (2009-05-01)在之后的声明中Manoe又特别批评这些提示挡住了了捐款按钮和使用许可的显示NoScript support forum  "Re: Latest NoScript version (1.9.2) breaks Adblock Plus", comment #3704, Giorgio Maone (2009-05-04)NoScript support forum  "Re: Additional steps to regain and retain user trust", comment #3935, Giorgio Maone (2009-05-06)并且表示他的CSS没有阻止Ghostery的正常工作。Ghostery News  "Attention all NoScript users", comment by Giorgio Maone, (2009-05-05)

大多数人则认为Manoe的CSS文件包含了足够多的统计代码，Ghostery的判断并没有错。有人指出Ghostery在其原始状态的提示并没有挡住Manoe的捐款按钮，并在几秒钟之后就消失了。另外，用户们指出Manoe的一行样式使得Ghostery无法提供一个网页bug的信息，并认为总体上来说这是Manoe自己的问题。但Manoe仍坚称Ghostery显示信息的方式不合适和过度敏感而导致两个扩展出现了矛盾。

这件事的讨论扩展到了第三方站点，Twitter  tweet by Mark Pilgrim (diveintomark) (2009-05-03)yardley.ca  "When blockers block the blockers", Greg Yardley (2009-05-04)有些人谎称干扰了Ghostery工作的是NoScript扩展而不是Manoe的站点。Ghostery的作者David Cancel原先发表了一些过激言论但随后修正了。Ghostery News  "Attention all NoScript users", David Cancel (2009-05-03)

2009年5月6日，在此事的激烈讨论平息之后，Maone公开表示他改变了自己的观点，为此他修改了自己站点的CSS。Ghostery的提示框不再被隐藏而是向页面中部轻微移动了一些，以免挡住捐款按钮或是许可信息。

 参见 
 GNU LibreJS
 JavaScript陷阱

 参考文献 

 外部链接 
NoScript官方网站 
Mozilla Add-ons网站上的NoScript页面

Category:Firefox 附加组件
Category:安全软件
Category:廣告攔截軟體