将编码后的 Javascript 放入 HTML 页面

Place the encoded Javascript in HTML page

这是一个包含脚本的 HTML 页面。 HTML 页面中的此脚本是纯文本。我想知道如何将此脚本与 base64 编码放在 html 页面中。 HTML 文件:-

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript</h1>


<p id="demo"></p>

<script>
var pi = 3.14;
document.getElementById("demo").innerHTML = pi;
</script>

</body>
</html>

脚本是:-

<script>
var pi = 3.14;
document.getElementById("demo").innerHTML = pi;
</script>

脚本的Base64编码:-

PHNjcmlwdD4NCnZhciBwaSA9IDMuMTQ7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVtbyIpLmlubmVySFRNTCA9IHBpOw0KPC9zY3JpcHQ+

这样做会

  1. 增加脚本的大小,因为 base64 会增加数据大小
  2. 提供几乎零安全性好处(或任何明显的好处,就此而言),因为用户可以像编码脚本一样轻松地解码脚本

如果您有兴趣降低脚本的编码效率而没有明显的好处,您可以通过对脚本进行 base64 编码来实现(,包括 <script> 标签)并将其包含为 data: URL:

<script src="data:text/javascript;base64,dmFyIHBpID0gMy4xNDtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVtbyIpLmlubmVySFRNTCA9IHBpOw=="></script>

这并没有真正提供任何混淆的好处,因为将 data:text/javascript;base64,dmFyIHBp... URL 粘贴到您的地址栏会显示解码的文本。

或者,您可以将其传递给 atob 进行解码,然后传递给 eval:

<script>
eval(atob("dmFyIHBpID0gMy4xNDtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVtbyIpLmlubmVySFRNTCA9IHBpOw=="));
</script>

同样,这不会带来任何安全优势,因为任何用户都可以使用 eval 轻松地 运行 此代码并查看解码后的文本。