在安装ShareGPT浏览器扩展之前,很多人都会担心:它会不会暗中读取我的浏览记录或聊天内容?实际上,只要仔细分析它的manifest.json文件,答案就很清楚了——该扩展的权限声明相当精简,仅包含storage和必要的sharegpt.com域名权限,完全没有tabs、history这类高危请求。内容脚本也只锁定在正式域名范围内,没有全局拦截,后台采用受限的service worker,本地数据严格隔离,没有任何多余的字段。

如果你已经安装了这款插件,心里仍不踏实,可以按照以下步骤,亲手验证它的权限边界和实际行为。下面逐一拆解五个核心审计点,帮助您全面了解ShareGPT扩展的安全性。
一、解析manifest.json中的显式权限声明
ShareGPT扩展的安全防线,完全由它的manifest.json清单文件划定。这个文件强制限定了它能访问哪些资源、哪些域名——所有权限必须在这里白纸黑字列出,否则连调用API的资格都没有。
操作指引:
- 打开扩展安装目录(在
chrome://extensions/页面启用“开发者模式”后,点击扩展详情可查看路径)。 - 定位
manifest.json,查找"permissions"字段——理想情况下只包含["storage"]这类最小权限。 - 再检查
"host_permissions"字段,它应严格限定为["https://sharegpt.com/", "https://api.sharegpt.com/"]这类具体域名,绝不会有"*://*/*"这样的通配符。 - 确认没有声明
"tabs"、"history"、"bookmarks"、"clipboardRead"等高危权限——一旦出现,意味着扩展能读取您全部的浏览上下文。
二、内容脚本注入范围的精确匹配验证
内容脚本是扩展与网页交互的核心,它的匹配规则直接决定了数据接触范围。ShareGPT的内容脚本只在ShareGPT官方页面及其合法嵌入场景下激活,不会全局监听您打开的每一个网页。
验证方法:
- 在
manifest.json中找到"content_scripts"数组。 - 逐一看每个对象的
"matches"属性——安全的情况下只有["https://sharegpt.com/*", "https://www.sharegpt.com/*"]这样的精确域名。 - 排除任何
"https://*/*"、"file://*"或者正则匹配的宽泛规则。 - 确认
"run_at"没有设置成"document_start"之外的非必要时机——过早注入可能劫持DOM初始化流程。
三、网络请求拦截与重写行为审计
如果扩展声明了 webRequest 或 webRequestBlocking 权限,它就能监听甚至修改您所有的出站请求——这是严重的隐私风险。ShareGPT扩展本不应具备这种能力。
检查清单:
- 在
manifest.json中搜索"webRequest"、"webRequestBlocking"关键字。如果出现,要进一步确认它是否真的在"permissions"数组里。 - 打开Chrome开发者工具的网络面板,在ShareGPT页面上操作,观察有没有异常的自定义请求头(比如
X-Extension-ID、X-Injected-By)。 - 进入
chrome://net-internals/#events,过滤REQUEST_STARTED事件,确认没有未经声明的域名被扩展拦截。
四、本地存储数据隔离性检测
扩展使用 chrome.storage API 存储数据时,默认是按扩展ID严格隔离的。但如果它使用了非托管方式或直接操作 localStorage,就可能与其他扩展或网站产生数据交叉。
动手验证:
- 在地址栏输入
chrome://extensions/,找到ShareGPT扩展的ID(一串随机字符)。 - 打开DevTools控制台,执行
chrome.storage.local.get(null, console.log),看返回的数据是否只有用户导出偏好、主题设置这些必要字段。 - 检查键名里有没有
"clipboard_history"、"full_page_html"这类超出功能所需的冗余项。 - 确认扩展没有调用
window.localStorage或indexedDB等Web API进行跨域持久化存储。
五、后台服务工作器权限收敛审查
Manifest V3 已强制用 service_worker 替代 background pages,生命周期由浏览器严格管控。ShareGPT的后台逻辑应该只处理消息转发和定时同步,不会驻留长期连接。
审计要点:
- 在
manifest.json中确认"background"字段是{"service_worker": "background.js"}这种格式。 - 检查
background.js源码,确认没有setInterval、long-polling fetch或WebSocket常连逻辑。 - 验证
chrome.alarms或chrome.runtime.onMessage监听器是否只响应来自内容脚本的有限消息类型(比如"export_conversation")。 - 确认没有调用
chrome.cookies、chrome.downloads等需要额外申请的敏感API。
