【问题标题】:How to execute a code encoded in base64 in Javascript如何在Javascript中执行base64编码的代码
【发布时间】:2018-02-05 23:19:41
【问题描述】:

我在 html 页面 (JavaScript) 中有这段代码:

<script>
    var cox,d = 0;
    Console.Log(cox,d);
</script>

现在我用 base64 编码手动加密了[var cox,d = 0; Console.Log(cox,d);],结果是这样的:IHZhciBjb3gsZCA9IDA7DQogQ29uc29sZS5Mb2coY294LGQpOw==

我希望这个编码字符串(代码)可以由同一页面中的另一个 JavaScript 函数执行...示例:

<script>
    var encoded = "IHZhciBjb3gsZCA9IDA7DQogQ29uc29sZS5Mb2coY294LGQpOw==";
    var decodedString = atob(encoded);
    /* Problem is here */
</script>

我想执行/* Problem is here */'中的JavaScript代码(上面编码)。

我该怎么办?

【问题讨论】:

  • 只是学究气,用BASE64编码和加密根本不是一回事。我认为您想使用eval - 但这是一个滑坡:)
  • 你知道Console != console
  • 我的电脑自动将其从控制台更改为控制台,因为我首先在堆栈溢出而不是在编辑器上对其进行编码......

标签: javascript html base64


【解决方案1】:

您可以使用eval 函数(it is not recommended),但它可以解决您的问题。

/* var cox,d = 0; console.log(cox,d); */
var encoded = "dmFyIGNveCxkID0gMDsgY29uc29sZS5sb2coY294LGQpOw==";
var decodedString = atob(encoded);


eval(decodedString);

另一种方法是使用New Function constructor

/* var cox,d = 0; console.log(cox,d); */
var encoded = "dmFyIGNveCxkID0gMDsgY29uc29sZS5sb2coY294LGQpOw==";
var decodedString = atob(encoded);

var func = new Function(decodedString);
func();

*在对代码进行编码时,Console 和 Log 必须是小写的,而不是 ucfirst。

我不是安全专家,我真心建议您检查在您的应用中评估和执行此类功能的风险。

Here is an interesting answer关于evalnew Function的区别

【讨论】:

  • 非常感谢...第二个对我来说正常工作,这就是我正在寻找的...
猜你喜欢
  • 2011-04-16
  • 2016-05-28
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 2022-11-18
  • 2015-09-26
相关资源
最近更新 更多