我想对我的Chrome扩展程序中的一部分进行Base64编码。但是,在我尝试测试时,它没有起作用。(未编码的扩展程序正常工作)。
是否可以将JavaScript的一部分进行Base64编码以在Chrome扩展程序中使用?如果可以,应该如何实现?
是否可以将JavaScript的一部分进行Base64编码以在Chrome扩展程序中使用?如果可以,应该如何实现?
atob
方法可用于解码 base64 字符串(btoa
可将字符串编码为 base64)。解码字符串后,可以使用 eval
将其作为代码进行解析并运行。
例如,以下是一个单行代码,可打印当前扩展的 ID:
alert(eval(atob('Y2hyb21lLmkxOG4uZ2V0TWVzc2FnZSgnQEBleHRlbnNpb25faWQnKQ==')));
我通过在JavaScript控制台中输入btoa("chrome.i18n.getMessage('@@extension_id')")
生成了上一个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'"
alert
框只是一个例子。你可以将整个JavaScript文件进行base64编码,然后用eval(atob("...base64 string..."));
包装结果。 - Rob W