NoScript 详解——Tor Browser 如何自动管理 JavaScript 权限
NoScript 在 Tor Browser 里的定位
NoScript 原本是一个 Firefox 用户可以自行安装的第三方扩展,功能是"控制哪些网站允许运行 JavaScript"。Tor Browser 的特殊之处在于:
- 内置且定制:Tor Browser 自带的 NoScript 是经过 Tor 团队修改的专属版本,和安全级别滑块联动
- 不要装额外 NoScript:如果你在 Tor Browser 里再装一个独立的 NoScript,两个扩展会互相干扰,破坏反指纹设计
NoScript 的核心原理
JavaScript 是现代网站的灵魂,但也是安全风险最大的攻击向量之一:
- 可以执行跨站脚本攻击(XSS)
- 可以进行浏览器指纹识别
- 可以偷偷植入追踪代码
- 可以利用浏览器 0day 漏洞
NoScript 的做法很直接:默认不信任任何网站的脚本请求,只有明确允许的才执行。
在 Tor Browser 里怎么用 NoScript
基础操作
地址栏旁边会有一个 "S" 形状的盾牌图标(NoScript 的标志)。点击它会弹出一个菜单,列出当前页面所有请求脚本的域名。
对于每个域名,有四个选项:
- 信任(Trust):允许脚本运行,该域名加入允许列表
- 临时信任(Temp Trust):仅当前会话允许,下次启动重置
- 不信任(Untrust):明确禁止该域名脚本
- 临时不信任(Temp Untrust):当前会话禁止
安全级别如何影响 NoScript 行为
在 Tor Browser 里,NoScript 的全局默认策略由安全级别滑块决定:
标准级别 → NoScript 默认允许所有 HTTPS 网站脚本
较安全级别 → NoScript 禁用所有 HTTP 网站脚本,允许 HTTPS
最安全级别 → NoScript 禁用所有网站脚本(HTTP + HTTPS)
这意味着:
- 在"最安全"级别下,即使你想手动信任某个网站,页面可能还是无法正常运行(NoScript 全局禁用优先级更高)
- 在"较安全"或"标准"级别下,可以用 NoScript 灵活控制个别网站
NoScript 与安全级别冲突时谁优先
NoScript 的全局策略由安全级别决定,但你对单个域名做的"临时信任/临时不信任"操作优先于全局设置。举个例子:
- 你在"最安全"级别(全局禁用脚本)
- 但访问 example.com 时,NoScript 里可以临时信任 example.com
- 结果:example.com 脚本运行了,其他网站还是被禁用
NoScript 能防什么
已知攻击
| 攻击类型 | NoScript 防住吗 |
|---|---|
| XSS(跨站脚本) | ⚠️ 部分防——只有浏览器级 XSS 防护配合时才好 |
| 指纹识别(Canvas/WebGL) | ✅ 防住——脚本被禁用后无法调用这些 API |
| 追踪 Cookie | ⚠️ 配合其他设置才防住——NoScript 只管脚本 |
| 0day JavaScript 漏洞 | ✅ 防住——没有脚本就没有执行 |
| 点击劫持(Clickjacking) | ⚠️ NoScript 有专门防护 |
NoScript 防不住什么
- 图片追踪(网站用隐形像素追踪)
- CSS 指纹(虽然 Tor Browser 有字体标准化配合)
- HTTPS 证书劫持(这是 HTTPS Everywhere 的职责)
NoScript 的高级设置(谨慎使用)
NoScript 图标菜单里有很多高级选项,但 Tor 项目建议保持默认。几个容易踩的坑:
不要打开"强制 HTTPS"
Tor Browser 已经内置 HTTPS Everywhere,NoScript 的 HTTPS 强制策略会和它冲突,导致某些网站加载异常。
不要关闭"跨标签身份泄漏防护"
这个功能在 Tor Browser 里默认是开启的——它防止一个网站的脚本在另一个标签页上执行。这是反指纹的重要一环,关掉会让跨站追踪成为可能。
不要导入/导出自定义规则
Tor Browser 的 NoScript 配置是为 Tor 环境优化过的,导入个人使用的 NoScript 规则文件会破坏安全级别与 NoScript 的联动。
日常操作习惯
推荐的使用节奏:
- 默认安全级别设为"较安全"
- 浏览 HTTPS 网站时,NoScript 让脚本正常运行
- 遇到可疑网站,直接用 NoScript 禁止脚本
- 遇到"最安全"级别下需要临时运行脚本的网站,用"临时信任"
- 会话结束后,NoScript 的临时设置自动重置(这是好设计)