7

我正在寻找 base64 编码我的 chrome 扩展的一部分。但是,当我尝试对其进行测试时,它不起作用。(未编码时扩展工作正常)。

是否可以对部分 javascript 进行 Base64 编码以用于 Chrome 扩展程序?如果是这样,怎么做?

4

1 回答 1

12

全局atob方法可用于解码 base64 字符串(btoa并可用于将字符串编码为 base64)。解码后的字符串eval可用于将字符串解析为代码,并运行它。

例如,这是一个打印当前扩展 ID 的单行代码:

alert(eval(atob('Y2hyb21lLmkxOG4uZ2V0TWVzc2FnZSgnQEBleHRlbnNpb25faWQnKQ==')));

解释

btoa("chrome.i18n.getMessage('@@extension_id')")我通过在 JavaScript 控制台中输入生成了之前的 base64 字符串。您可以自由使用任何其他方法(例如base64 命令)。这是前一条线的完整细分。

alert(eval(atob(btoa("chrome.i18n.getMessage('@@extension_id')")));
//atob decodes from base64, btoa encodes to base64, so they cancel out each other
alert(eval(          "chrome.i18n.getMessage('@@extension_id')" ));
//eval parses the string as code, so we get
alert(                chrome.i18n.getMessage('@@extension_id')   );

内容安全政策

如果您想在扩展程序的进程(例如后台/弹出页面)中使用此方法,则需要调整内容安全策略。默认情况下,禁止从字符串生成代码。要覆盖此默认策略,请将以下条目添加到清单文件:

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
于 2013-04-28T19:36:18.900 回答