在所有地址上运行我自己的用户脚本有风险吗?

2024-03-08

Tampermonkey(对于大多数浏览器)和 Greasemonkey(对于 Firefox)都支持@match and @include指令。

当我开始阅读它们之间的区别时,结果发现@match有点严格:用户脚本不会在某些地址上启动,这可能被认为是潜在危险或只是不需要的。

  • https://wiki.greasespot.net/Include_and_exclude_rules https://wiki.greasespot.net/Include_and_exclude_rules
  • https://wiki.greasespot.net/Metadata_Block#@match https://wiki.greasespot.net/Metadata_Block#@match

由此产生了一个问题:

a) 有吗启动的任何潜在风险my own用户脚本上all地址 (i.e. @match *://*/*和同样的@include)?

或者,b)在某些地址上启动用户脚本的限制仅与第三方用户脚本,即从某些网站下载的用户脚本,因此可能包含一些恶意代码?


在所有地址上运行您自己的用户脚本是否存在潜在风险?是的,一个小的;见下文。

(目前)不运行的主要原因your own所有页面上的用户脚本是:

  1. 浏览器性能:加载和运行脚本需要时间、CPU 周期,有时还需要磁盘访问。通常情况下,延迟很难被察觉,但如果它没有执行有用的服务,为什么还要延迟呢?
  2. 意外的副作用:你认为你的$(".someclass").remove();代码只影响X页——直到它不影响为止。抓耳挠腮,然后是随意的咒骂……
    其他常见的副作用包括导致页面或用户脚本失败的脚本冲突 https://stackoverflow.com/questions/15171769/jquery-conflict-between-greasemonkey-script-and-page.
  3. iframes:默认情况下,脚本在 iframe 上运行,并且某些页面具有数十个 iframe 和/或嵌套了多个级别的 iframe。
    这是性能和副作用问题的乘数。
  4. 风险:敏感代码泄露: Use $.get( "frbyPlay.me/pics?user=admin&pw=1234"...,在非沙盒代码中,错误的站点可以看到它(或 AJAX)。
    当使用页面的JS时,攻击的途径是无限的。幸运的是,这通常风险很低并且很容易缓解,但无知或自满可能会导致严重的尴尬。
  5. 风险:接触“绝命毒师”:最近,一个以前深受喜爱和信任的扩展变成了邪恶 https://bugzilla.mozilla.org/show_bug.cgi?id=1472948.
    当您的脚本使用的某些库(例如 jQuery)被黑客攻击或“商业优化”时会发生什么?脚本运行的页面越少,恶作剧的机会就越少,造成的损害也就越小。
    (当然,如果 Tampermonkey 本身也留过山羊胡子,那么无论如何我们都会被打败。)

请注意,原因 1 和 2 也是您应该使用的原因@match尽可能多地而不是@include. @match解析网址的速度更快,并且在不需要/意​​外的网站上触发的可能性也大大降低。
(而且,在 Tampermonkey 中,@match在 Tampermonkey 仪表板中添加这些小站点图标。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在所有地址上运行我自己的用户脚本有风险吗? 的相关文章

  • 使用 Greasemonkey(或类似的用户脚本引擎)更快地重定向?

    我正在使用 Greasemonkey 将某些 URL 重定向到另一个 URL 但我想在要重定向的 URL 加载之前进行重定向 目前我正在使用这个简单的脚本 UserScript name Redirect Google descriptio
  • 如何使用用户脚本覆盖警报功能?

    现场有这样的代码 其站点位于 LAN 上 我尝试使用 GM 禁用该警报 我正在尝试这样做 unsafeWindow alert function 但我看到警报并收到此错误 Error uncaught exception Exception
  • Ajax:如何知道用户脚本实现是否未设置 Origin 标头?

    某些用户脚本实现 例如 Google Chrome 允许直接跨 AJAX 请求 但其他一些则不允许 并且使用同源策略限制 这是代码的一部分 Get the size of the file Button the current button
  • Firefox 4中的Greasemonkey脚本,想更改网页上的一行代码

    好吧 我会尽量让这件事变得尽可能简单 但不会太含糊 我想更改网页上的一行代码 以防止出现预览窗格 原始代码行 div class previewpane 我想将上面的行替换为 div class previewpane previewpan
  • 如何在注入代码中使用GM_xmlhttpRequest?

    我正在编写一个注入网页的用户脚本 该脚本从网络服务器读取一些数据 我想将消息发送到侦听应用程序以对数据做出反应 现在 我所做的就是尝试向我的监听应用程序发送一个字符串命令 看看我是否可以读取它 我的代码在注入之前可以工作 但之后我收到 未定
  • 如果页面加载失败,如何运行 Tampermonkey 脚本?

    我有一个在服务器页面上运行的脚本 有时发送不会将任何内容发送回客户端 我得到未收到数据Chrome 中的错误 我想注册此事件 通过 AJAX 通知另一台服务器 然后重新加载页面 即使页面加载失败 如何确保脚本运行 None
  • Google Chrome 用户脚本参考 window.open

    我已经尝试解决这个问题有一段时间了 但是当我尝试引用我打开的窗口时 句柄始终是未定义的 值得注意的是 这被用于用户脚本这是有问题的片段 var donateWindow Show the donation popup and open a
  • Chrome iframe 父级未定义

    我有这个 Gmail 脚本 它运行在canvas frame iframe 我想使用父文档的句柄parent document 但在 Chrome 中告诉我它是未定义的 在 Firefox 中工作正常 但在 Chrome 上就崩溃了 那么
  • Greasemonkey调试,获取真实行号

    我正在尝试让 Greasemonkey 用户脚本正常工作 但它一直抛出异常 缺少 声明之前 在 Javascript 错误控制台中 Greasemonkey 文档说应该忽略行号 但由于脚本相当长 因此了解错误发生的位置将非常有帮助 我怎样才
  • 如何强制 chrome 下载文件而不打开它们?

    我正在使用 window location href link mp4 在 chrome tampermonkey 的用户脚本中 但 chrome 不是开始下载 而是打开文件并开始播放它 我在变量中有一个文件链接 如果有任何方法可以通过 i
  • 使用greasemonkey替换javascript函数

    我想使用greasemonkey 更改脚本 但这不起作用 请帮忙 original script 现在我想根据我的要求更改函数 abc 我尝试了以下方法但没有帮助 UserScript name Test namespace UNIQUE
  • 让我的用户脚本等待其他脚本加载

    Edit 我将用一个演示问题的简化示例来替换原来的 令人困惑的问题 背景 我正在尝试编写一个将在 Chrome 中运行的用户脚本 该脚本需要调用 JavaScript 函数AlertMe 它位于用户脚本之外 此函数是页面的一部分 包含在服务
  • addEventListener 仅在页面刷新时工作?

    我正在修改两个下拉列表的外观 这里没有问题 一切都很好 唯一的问题是addEventListener该方法仅在页面刷新时有效 如何使此代码在页面加载时工作而无需点击刷新按钮 window addEventListener load func
  • 单击按钮的用户脚本

    我想使用greasemonkey 单击 立即购买 按钮 UserScript name script namespace sc include version 1 require http ajax googleapis com ajax
  • 如何查看当前显示的html页面的来源(动态)而不是原始页面? [复制]

    这个问题在这里已经有答案了 大家好 作为一名狂热的 Firefox 用户 我使用诸如 Style 和 Greasemonkey 之类的插件来修改页面的默认样式 然而 浏览器的视图 gt 页面源选项仅显示原始形式的页面 而不显示由脚本或样式操
  • 寻找 Greasemonkey 脚本编写基础知识/教程 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我已经在互联网上搜索了好几天 试图找出如何编写自己的脚本 一个比 Hello World 脚本更复杂的
  • 添加按键侦听器并使用 Javascript 单击 Greasemonkey 中的链接

    我想创建一个greasemonkey 脚本 它将在一个邮件站点中添加用于注销操作的快捷键 当前注销链接 注销 hl en 其中有一个id r5 我能够获取链接的节点 但无法调用单击它 我尝试了如下脚本 function key event
  • 数据列表验证中 Obj.length>0 错误

    我有一个脚本 我通过 tempmankey 在网站上运行它 该脚本基本上是在输入字段中插入数据列表 并根据数据列表选择的值更改其他输入值 code function bdi contains Truck No closest div nex
  • 有脚本模拟控件、按键序列吗?

    我搜索并发现我可以使用 jQuery 模拟按键事件 但我对 jQuery 的了解很差 而且我不知道具体是如何实现的 So I have a Greasemonkey script which manages 2 different webp
  • 检测默认事件处理

    是否可以检测特定 DOM 事件是否绑定了任何事件处理程序 包括浏览器默认事件处理 在 Firefox 的 Greasemonkey 代码中 EcmaScript 5 1 严格模式 https developer mozilla org en

随机推荐