【问题标题】:Run JavaScript Code after Base64 encryptionBase64 加密后运行 JavaScript 代码
【发布时间】:2013-03-28 20:38:36
【问题描述】:

我已经使用 base64 方法加密了我的 JavaScript 代码,如 here 所示。但是当我使用 document.ready 运行编码函数时,JavaScript 函数并没有做它应该做的事情。

如何实现,加密后的代码将被解密并开始运行函数?

提前感谢您! :)

【问题讨论】:

  • 这取决于您的代码。另请注意,Base64 不是加密。你为什么要这样做?
  • 您好,感谢您的快速回复。我这样做是因为我想保护我的 JavaScript 代码不受其他人的影响。我知道,没有办法保护它免受每个人的侵害,但我希望它受到保护,免受初学者的侵害。对不起我的英语不好:)
  • 所以你想“保护”你的代码免受那些可能对 JS 一无所知的人的攻击......老实说,不要这样做,以免麻烦。
  • 加密为 base64 字符串对于可共享性或当您想要创建书签时非常有意义(代码从网络地址栏 javascript:eval(atob('...')) 运行,但请记住,它不提供任何安全性。

标签: javascript function base64


【解决方案1】:

只需在解码后的字符串上使用eval。

使用代码alert("test");的示例:

eval(decode64('YWxlcnQlMjglMjJ0ZXN0JTIyJTI5JTNC'));

演示:http://jsfiddle.net/uFxnz/

注意:使用eval 函数与不安全和低效的代码相关联,但在这种情况下,您可以尽可能多地控制代码的来源,因此它会按照您的意愿行事。

【讨论】:

  • @Qwerty:这不是内置函数。使用 OP 链接到的代码。
  • 对.. 但它确实做了内置函数 btoa() 和 atob() 对吗?
  • @Qwerty:是的,但并非所有浏览器都提供这些功能。 IE 直到版本 10 才拥有它们。
【解决方案2】:

要“保护”您的代码...

..您可以使用以下简单程序。

但是,请记住,它不提供任何安全性。但这并不意味着没有用例。加密为 base64 字符串对于可共享性或当您想要创建时非常有意义,例如书签(代码从网络地址栏运行 javascript:eval(atob('...'))。


现在,假设这是您的代码:

1。守则

// commentary, Yaaay!
var myObj = {
    foo : function() { alert("Baz!")} ,
    html : "<div id='myDIV'></div>", // it's ["'] proof
    bar : 123 
};
myObj.foo();

2。 base64 字符串

1. var base64Fun = btoa((function(){
2. // commentary, Yaaay!
3. var myObj = {
4.     foo : function() { alert("Baz!")} ,
5.     html : "<div id='myDIV'></div>", // it's ["'] proof
6.     bar : 123 
7. };
8. myObj.foo();
9. }).toString().slice(13,-2))

请注意,我只添加了1 和9 行,其余的是您的代码,完好无损。

3。运行它

eval(atob(base64Fun));

eval(atob("Ly8gY29tbWVudGFyeQp2YXIgbXlPYmogPSB7Cglmb28gOiBmdW5jdGlvbigpIHsgYWxlcnQoIkJheiEiKX0gLAoJaHRtbCA6ICI8ZGl2IGlkPSdteURJVic+PC9kaXY+IiwKCWJhciA6IDEyMyAKfTsKbXlPYmouZm9vKCk7"));

兼容性

并非所有浏览器都支持btoa() 和atob(),但是..

  1. 使用 polyfil 并教给浏览器这些功能。 link
  2. 另辟蹊径

【讨论】:

    【解决方案3】:

    您不能通过 base64 转换器运行您的 JS 代码并期望它正常工作。

    您正在寻找的是一个缩小器。喜欢 uglifyjs:

    http://marijnhaverbeke.nl/uglifyjs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      相关资源
      最近更新 更多