我正在寻找 base64 编码我的 chrome 扩展的一部分。但是,当我尝试对其进行测试时,它不起作用。(未编码时扩展工作正常)。
是否可以对部分 javascript 进行 Base64 编码以用于 Chrome 扩展程序?如果是这样,怎么做?
我正在寻找 base64 编码我的 chrome 扩展的一部分。但是,当我尝试对其进行测试时,它不起作用。(未编码时扩展工作正常)。
是否可以对部分 javascript 进行 Base64 编码以用于 Chrome 扩展程序?如果是这样,怎么做?
全局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'"