【问题标题】:How to use document.write() into .html()?如何在 .html() 中使用 document.write()?
【发布时间】:2013-11-05 07:56:06
【问题描述】:

我知道这个问题有点愚蠢。但我有下一个问题: 我通过 http://myobfuscate.com/ 混淆了我的 HTML 代码,你可以看到这个网站是这样的: 他创建变量并将其放入 JS 代码。下面是这样的代码:

var lOOL = 'document.write()';

比它通过 eval() 在页面上打印。 所以如果我想在 AJAX 成功函数上插入这段代码:

jQuery('#asd').html(data)

我有问题。我能做些什么来解决它? 附言在我的后端我有下一个代码:

echo '<script id="crypt_data" language="javascript" type="text/javascript"> '.$obfuscatedcode.'</script>';

我在使用库 http://myobfuscate.com/ 后拥有的所有 JS 代码

我有 $obfuscatedcode 谢谢。

【问题讨论】:

  • 我试图像这样$obfuscatedcode = preg_replace("/eval\((\S*)\)/", 'eval($1.replace("document.write","$el.html"))', $obfuscatedcode); 替换 eval() 但它不起作用..在萤火虫上我有错误:ReferenceError: $el is not defined
  • 只是出于好奇:你为什么要混淆 JS 和 HTML?混淆器生成混淆后的版本以及去混淆它的代码,最终都出现在客户端上。
  • 这真的值得吗?无论如何都可以通过浏览器检查器工具读取“混淆”的 HTML
  • 我只对我的 html 代码进行混淆处理。

标签: javascript php jquery html


【解决方案1】:

一般来说,您应该只将服务器上静态文件中的 javascript 最小化一次。另外,我建议您不要使用 myobfuscate.com 中的任何代码,因为它在 Web Of Trust 上的声誉确实很差,并且被 AV 提供商列入黑名单。

【讨论】:

  • 你有一些混淆的变种吗?
  • 使用像谷歌的闭包编译器这样的工具来缩小你的代码。这个问题谈论它stackoverflow.com/questions/2030671/…。因为它是一个命令行工具,您可以将其纳入您的构建/部署过程。我怀疑你是从 PHP 生成动态 javascript 吗?您不应该这样做,而是将您的 javascript 重写为静态并插入来自 PHP 的动态调用。至于你的 HTMl,正如@JAL 所说,混淆 HTML 是徒劳的。
  • 在我的后端,我从数据库中获取数据。比我在循环上做 HTML 比我做这个 HTML 的混淆
  • 你仍然不应该尝试混淆 HTML,它不会阻止任何人阅读源代码。它最终只会在您的服务器上浪费 CPU 周期,这是完全没有必要的。可以最小化 HTML 以减小页面大小,但试图通过混淆 HTML 来隐藏 HTML 不是一个好主意,也不会阻止任何想要阅读您的源代码的人。
【解决方案2】:

你可以使用 jquery 的 append 函数。 jquery append

$('#asd').append( "<p>put your html here</p>" );

【讨论】:

    【解决方案3】:
    document.getElementById("yourdiv").innerHTML = "Your Message";
    

    【讨论】:

      【解决方案4】:

      为此,您需要更改http://myobfuscate.com/ 提供的代码。

      1. 将 eval 函数替换为您的函数。我在下面的示例中使用了 newEval。
      2. 创建一个新函数来替换 eval。将此代码添加到其中。

        函数newEval(代码,目标) { 代码 = code.replace(/document.write(/, "myWrite('" + target + "',"); 评估(代码); }

      3. 创建另一个名为 myWrite 的函数,它将接收目标作为第一个参数,第二个参数将是您的反混淆代码,然后您可以使用 jquery 将代码放入所需的 html 部分。

      【讨论】:

      • 你能不能写得详细一点?
      • 您从该站点获得的代码最后调用了 eval 函数。重复使用 newEval(O10(O1l(IOO))); 之类的 newEval 创建 newEval 函数,如第 2 步和 myWrite 函数中所述,使用 $(target).html(code); 之类的代码
      • 它必须是这样的,替换后我将拥有:newEval(O10(O1l(IOO)));比我做这个代码: function newEval(code) { $('#sadsa').html(code); } 是吗?
      • 没有。有2个功能。 1. newEval - 它取代了你的评估。 2、myWrite - 这将替换您的 document.write 函数。 newEval 必须和我给你的一样。在 myWrite 函数中,您可以拥有您想要的代码。我建议你使用传递的选择器而不是硬编码它。
      • 你不应该这样做,使用 eval 既不推荐也不是最佳的。如果您不必生成动态 javascript,请找到解决方案,这将成为您的安全问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      相关资源
      最近更新 更多