如何在服务器端混淆JavaScript?

时间:2014-08-11 02:05:10

标签: javascript php

我有一个脚本,我想混淆或加密,以隐藏查看源代码的竞争。我找到了简单的JS混淆器,但我的脚本问题是我在PHP中将PHP回显变量。 PHP正在回显字符串和真/假。

这是一段包含PHP的JavaScript。

function redirect() {
    var r = <?php echo $rvar; ?>;
    if (r) {
        window.location = prepare("<?php echo $redirect; ?>");
    }
}

有人可以告诉我我可以做些什么来隐藏我的JavaScript,但能够用PHP动态构建JS吗?

1 个答案:

答案 0 :(得分:1)

我曾经想要混淆代码的唯一一次是我完全为此感到羞耻。回想起来,我可能会混淆我写过的所有内容。如果保护源对您的健康至关重要,请考虑转向桌面编程。

尽管如此,如果有一件事经历和记忆给我的话,那么这个领域的任何一个重要的新人都会顽固地向前推进他们自己的想法,不管它有多糟糕,它对常识和最好的研究多少练习,或者在整个问题上有多少线索poo-poos。如果你遵守它,后见之明会慷慨地提醒你这个时期 - 畏缩和所有;相比之下,一些陌生人的惩罚会变得苍白,所以我会给你一个可能的答案。

使用PHP output buffering controls。您将需要在将输出所有JavaScript的脚本顶部启动输出缓冲。这会将所有内容捕获到缓冲区中,然后可以将其分配给一个简单的变量。此变量将包含应该立即回显到页面的所有内容,而是捕获并保存到变量中。这个变量只是一个常规字符串。将它传递给您找到的那些JS混淆器之一。这假设它是用PHP完成的,并且是用于执行此操作的PHP库。当它被混淆时,将其回显。这就对了。这是一个例子:

<?php
// Start output buffering.
ob_start();

?>
function redirect() {
var r = <?php echo $rvar; ?>;
  if (r) {
    window.location = prepare("<?php echo $redirect; ?>");
  }
}
<?php

// Get all the output captured in the buffer, and turn off output buffering.
// This will be a string.
$js_source = ob_get_flush();

// Obfuscate the $js_source string, by passing it to the obfuscator
// library you found.
$obfuscated_js_source = obfuscator5000($js_source);

// Send the source code to the browser by echoing it out.
echo $obfuscated_js_source;
相关问题