簡體   English   中英

如何在Javascript中執行以base64編碼的代碼

[英]How to execute a code encoded in base64 in Javascript

我在html頁面(JavaScript)中有以下代碼:

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

現在,我加密了[var cox,d = 0; Console.Log(cox,d);] [var cox,d = 0; Console.Log(cox,d);]手動使用base64編碼,結果是這樣的: IHZhciBjb3gsZCA9IDA7DQogQ29uc29sZS5Mb2coY294LGQpOw==

我希望此編碼的字符串(代碼)可以由同一頁面中的另一個JavaScript函數執行...示例:

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

我想在/* Problem is here */執行JavaScript代碼(上面編碼)。 /* Problem is here */ '。

我能怎么做?

您可以使用eval函數(不建議使用) ,但是它可以解決您的問題。

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

另一種方法是使用New Function構造函數

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

*對代碼進行編碼時,Console和Log必須小寫,而不是ucfirst。

我不是安全專家,因此我真的建議您檢查在您的應用中評估和執行這種功能的風險。

這是有關evalnew Function之間的區別的有趣答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM