![]() Logo used since November 2022 | |
Original author(s) | Giorgio Maone |
---|---|
Developer(s) | Giorgio Maone |
Initial release | May 13, 2005; 19 years ago (2005-05-13)[1] |
Stable release | |
Preview release | 11.5.3rc1 / 11 November 2024; 5 months ago (2024-11-11) |
Repository | https://github.com/hackademix/noscript |
Written in | JavaScript,XUL,CSS |
Available in | 45[3] languages |
Type | Browser extension |
License | GPLv2+ |
Website | NoScript.net |
NoScript (orNoScript Security Suite) is afree and open-sourceextension forFirefox- andChromium-based web browsers,[4] written and maintained by Giorgio Maone,[5] a software developer and member of the Mozilla Security Group.[6]
By default, NoScript blocks active (executable) web content, which can be wholly or partially unblocked by allowlisting a site or domain from the extension's toolbar menu or by clicking a placeholder icon.
In the default configuration, active content is globally denied, although the user may turn this around and use NoScript to block specific unwanted content. The allowlist may be permanent or temporary (until the browser closes or the user revokes permissions). Active content may consist ofJavaScript, web fonts, mediacodecs,WebGL,Java applet,Silverlight andFlash. The add-on also offers specific countermeasures against security exploits.[7]
Because many web browser attacks require active content that the browser normally runs without question, disabling such content by default and using it only to the degree that it is necessary reduces the chances of vulnerability exploitation. In addition, not loading this content saves significant bandwidth[8] and defeats some forms of web tracking.
NoScript is useful for developers to see how well their site works with JavaScript turned off. It also can remove many irritating web elements, such as in-page pop-up messages and certainpaywalls, which require JavaScript in order to function.
NoScript takes the form of atoolbar icon orstatus bar icon in Firefox. It displays on every website to denote whether NoScript has either blocked, allowed, or partially allowed scripts to run on the web page being viewed. Clicking or hovering (since version 2.0.3rc1[9]) the mouse cursor on the NoScript icon gives the user the option to allow or forbid the script's processing.
NoScript's interface, whether accessed by right-clicking on the web page or the distinctive NoScript box at the bottom of the page (by default), shows the URL of the script(s) that are blocked, but does not provide any sort of reference to look up whether or not a given script is safe to run.[10] With complex webpages, users may be faced with well over a dozen different cryptic URLs and a non-functioning webpage, with only the choice to allow the script, block the script or to allow it temporarily.
On November 14, 2017, Giorgio Maone announced NoScript 10, which will be "very different" from 5.x versions, and will use WebExtension technology, making it compatible withFirefox Quantum.[11] On November 20, 2017, Maone released version 10.1.1 for Firefox 57 and above. NoScript is available for Firefox for Android.[12]
On April 11, 2007, NoScript 1.1.4.7 was publicly released,[13] introducing the first client-side protection against Type 0 and Type 1cross-site scripting (XSS) ever delivered in a web browser.
Whenever a website tries to inject HTML or JavaScript code inside a different site (a violation of thesame-origin policy), NoScript filters the malicious request and neutralizes its dangerous payload.[14]
Similar features have been adopted years later byMicrosoft Internet Explorer 8[15] and byGoogle Chrome.[16]
The Application Boundaries Enforcer (ABE) is a built-in NoScript module meant to harden theweb application-oriented protections already provided by NoScript, by delivering a firewall-like component running inside the browser.
This "firewall" is specialized in defining and guarding the boundaries of each sensitive web application relevant to the user (e.g., plug-ins, webmail,online banking, and so on), according to policies defined directly by the user, the web developer/administrator, or a trusted third party.[17] In its default configuration, NoScript's ABE provides protection againstCSRF andDNS rebinding attacks aimed at intranet resources, such as routers and sensitive web applications.[18]
NoScript's ClearClick feature,[19] released on October 8, 2008, prevents users from clicking on invisible or "redressed" page elements of embedded documents or applets, defeating all types ofclickjacking (i.e., from frames and plug-ins).[20]
This makes NoScript "the only freely available product which offers a reasonable degree of protection against clickjacking attacks."[21]
NoScript can force the browser to always useHTTPS when establishing connections to some sensitive sites, in order to prevent man-in-the-middle attacks. This behavior can be triggered either by the websites themselves, by sending theStrict Transport Security header, or configured by users for those websites that don't support Strict Transport Security yet.[22]
NoScript's HTTPS enhancement features have been used by theElectronic Frontier Foundation as the basis of itsHTTPS Everywhere add-on.[23]
In May 2009, it was reported that an "extension war" had broken out between NoScript's developer, Giorgio Maone, and the developers of the Firefox ad-blocking extensionAdblock Plus after Maone released a version of NoScript that circumvented a block enabled by an AdBlock Plus filter.[29][30] The code implementing this workaround was "camouflaged"[29] to avoid detection. Maone stated that he had implemented it in response to a filter that blocked his own website. After mounting criticism and a declaration by the administrators of theMozilla Add-ons site that the site would change its guidelines regarding add-on modifications,[31] Maone removed the code and issued a full apology.[29][32]
In the immediate aftermath of the Adblock Plus incident,[33] a spat arose between Maone and the developers of theGhostery add-on after Maone implemented a change on his website that disabled the notification Ghostery used to reportweb tracking software.[34] This was interpreted as an attempt to "prevent Ghostery from reporting on trackers and ad networks on NoScript's websites".[33] In response, Maone stated that the change was made because Ghostery's notification obscured the donation button on the NoScript site.[35] This conflict was resolved when Maone changed his site's CSS to move—rather than disable—the Ghostery notification.[36]