【问题标题】:Dynamic JavaScript Obfuscation动态 JavaScript 混淆
【发布时间】:2012-04-02 14:02:53
【问题描述】:

我开发了一个轮询服务器并将响应 JavaScript 注入客户端网页的系统。我想混淆服务器服务的 JavaScript,但我也想知道是否有一个工具可以根据令牌或密钥对其进行动态混淆。这意味着每个新会话都会获得仅在该会话期间与该客户端一起使用的唯一脚本。

如果这还不存在,有人可以向我提供一个关于如何编写我自己的 JavaScript 混淆工具的链接。

【问题讨论】:

  • 根据密钥或令牌进行混淆有什么意义?对我来说,这听起来更像是加密。
  • JavaScript 访问浏览器后,客户端可以(轻松)对其进行解码并查看 JavaScript 源代码。
  • 但是如果每个请求都不同,那么尝试理解它会相当困难。是的,我想在某种程度上它是一种加密。
  • 它可能对每个请求使用不同的密钥,但它需要在某些时候被解码才能让浏览器运行它。此外,解密代码将是可见的。
  • 是的,但是如果我动态重命名变量和排序。如果有人要解码 JavaScript,他们很可能无法确定代码的开头或结尾。只要他们每次开始新会话时都不同。他们很可能也无法找到代码运行方式的任何模式。

标签: javascript obfuscation


【解决方案1】:

克里斯,我鼓励你以不同的方式看待这个问题。

首先,你的问题似乎是你想在你的网页上显示一些东西,但你想掩饰它到达那里的方法。执行此操作的绝对最佳方法是在服务器上执行所有代码。

这可以让你解放出来,这样你就不必混淆任何东西了。无论如何,您执行的任何 Javascript 都只会处理原始数据,并且不会是黑客可以做任何事情的专门内容。

如果所有工作都在服务器上完成,黑客就无法看到您的业务流程。

因此,您可以向服务器发出 Ajax 调用,该服务器执行代码并返回 HTML 或 JSON 数据,然后您的应用可以使用这些数据放置在网页上。黑客无事可做,您也不必在任何事情上进行混淆。

【讨论】:

  • 感谢您的回答。问题是我开发的系统是用于使用 WebGL 的 3D 游戏引擎。我希望能够进行很多复杂的计算客户端。我不想让书呆子们轻松地为游戏制作机器人,我也不想让昂贵的 3D 模型通过网络分发。如果我可以使代码尽可能独特,我希望可以避免这样的事情。
  • 显然您知道,一旦 Javascript 在客户端计算机上,您就无法阻止逆向工程,只是让它有点烦人。您可能对此感兴趣:stackoverflow.com/questions/232736/code-obfuscator-for-php
  • 所以基本上安全的高度是将图形流式传输到客户端并让所有渲染在服务器端完成。我想有志者事竟成。感谢您的信息。
【解决方案2】:

这是一个根据密钥加密 javascript 的页面 http://scriptasylum.com/tutorials/encode-decode.html

您可以做的事情是隐藏您的 javascript,以这种方式发送它:

<?php

header("Refresh: 0;javascript:document.writeln('');");

?>
your js code here

我没有尝试过,但我认为它会在浏览器查看时创建一个空白页面。

【讨论】:

  • 老练的黑客能够在任何类型的网络跟踪工具(例如 Fiddler、Firebug、Chrome 工具、Opera Dragonfly、Ethereal 等)中看到下载的 Javascript。
  • 看起来很有趣,谢谢!我不认为刷新标题会阻止黑客获得他们想要的东西。总有网络调试工具。
  • 是的。但没有什么能阻止黑客。反正混淆不是阻止黑客,而是阻止懒惰的人。
猜你喜欢
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 2023-03-13
  • 2014-08-13
相关资源
最近更新 更多