A guide to using NoScript 10.x

When Firefox 57 arrived, NoScript 5 users were left with the unsettling reality of not being able to selectively filter JavaScript until the next version was released, a week or so later. Worse, its release was poorly received, due to bugs and a brand new UI. Now that the dust has settled, and the bugs have been vanquished, NoScript users are still presented with the foreign UI and little to no official documentation. This post will serve as a guide for both old and new NoScript 10 users to get up to speed.

The trust levels

Each domain in NoScript 10 has a trust level. By default, each domain is under the Default trust level, but you may find your old NoScript domains already under the Trusted level. These are both familiar to previous NoScript users: the default is not to allow JavaScript, but domains can be explicitly trusted. NoScript 10 also adds two more levels: Untrusted and Custom.



Though the UI makes this a bit unclear, these trust levels are columns. For each domain, one button is selected, meaning one trust level.



Editing trust levels

Each trust level can be edited to describe what happens when you set a domain to that level. For Default, Trusted, and Untrusted, that configuration is global. That is, you you say that the Default trust level should trust fonts (by checking the fonts checkbox), but nothing else, then every domain in that trust level will have that setting. When you modify the Custom trust level, it’s per-domain.

This is the misleading part, due to the UI. To edit a trust level, you need to set a domain to that trust level and then click on the trust level again, once it expands. Even though you clicked on a specific domain to set the Default, Trusted, or Untrusted configuration, note that it applies to all domains with that trust level.



Safe defaults

NoScript 10 allows for more control over what’s filtered. Scripts, objects, media, frames, fonts, WebGL, fetch, and other things can all be filtered. Since you’re using NoScript for privacy, I recommend changing your Default trust level to uncheck all items. If you trust a domain completely, add it to the Trusted level. If you only want some items from it, like fonts and WebGL, then use a Custom trust level for that domain.



Top-level domain configuration

When browsing sites and using NoScript 10, you’ll likely notice that a domain will show up multiple times within the NoScript menu. This is because NoScript 10 allows you to modify the trust level of the specific domain used (such as blog.jeaye.com), as well as the entire top-level domain (such as jeaye.com). If you set a top-level domain to a specific trust level, that trust level will apply to all sub-domains as well. This is very handy for marking entire ad/tracking domains as Untrusted.



Permanent trust levels

By default, any changes made to trust levels are temporary. In order to permanently set a domain’s trust level, you also need to click the big clock which appears within the Trusted button. If the clock is very little, then the trust level is already permanent.



Trusting HTTPS only

NoScript 10 provides the ability to trust a domain only if it’s through a secure connection. You can tell if this is enabled by whether or not the lock, which appears on that domain’s row, is green or red. If it’s red, then the domain will be trusted even through unencrypted connections. This is a concern, since unencrypted connections are vulnerable to MITM attacks and you may be trusting arbitrary and nefarious JavaScript. I recommend making sure the lock is always green (you can click on the lock to toggle it).





For previous NoScript users, I also recommend going back through your whole trusted list and setting all domains to have a green lock. You can get to that list by clicking the options button within the NoScript menu. There isn’t an automatic process for marking them all green yet, but it only took me 10 minutes or so to both ensure all locks are green and do some cleaning of old domains I no longer need to trust.



The remaining UI

With all of that covered, the only two remaining buttons are for revoking all temporary permissions and temporarily trusting the whole page. You can mouse over each of them to see a tooltip for what they do; it’s analogous to the previous NoScript’s behavior. At this point, you know all you need to effectively use NoScript 10.

Room for improvement

NoScript 10 has come a long way in the past month, but its UI could certainly be improved. I think moving the Default, Trusted, and Untrusted configuration to the settings menu would make things a lot less confusing. I also think that more text in the UI would allow new users to pick things up more quickly. Lastly, Untrusted should be called Distrusted, but now we’re just splitting hairs.