是否可以对Base64编码chrome扩展?

时间:2013-04-28 16:47:23

标签: javascript google-chrome google-chrome-extension base64

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

是否可以将Base64编码为javascript的一部分用于Chrome扩展程序?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:10)

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

例如,这是打印当前扩展名ID的单行:

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

解释

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

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')   );

内容安全政策

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

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"