如何在服务器端混淆JavaScript?

如何在服务器端混淆JavaScript?,javascript,php,Javascript,Php,我有一个脚本,我想混淆或加密,以避免竞争对手查看源代码。我发现了简单的JS模糊器,但我的脚本的问题是我有PHP将变量回送到JavaScript中。PHP正在回显字符串和true/false 下面是一段包含PHP的JavaScript function redirect() { var r = <?php echo $rvar; ?>; if (r) { window.location = prepare("<?php echo $redirect

我有一个脚本,我想混淆或加密,以避免竞争对手查看源代码。我发现了简单的JS模糊器,但我的脚本的问题是我有PHP将变量回送到JavaScript中。PHP正在回显字符串和true/false

下面是一段包含PHP的JavaScript

function redirect() {
    var r = <?php echo $rvar; ?>;
    if (r) {
        window.location = prepare("<?php echo $redirect; ?>");
    }
}
函数重定向(){
var r=;
if(r){
window.location=prepare(“”);
}
}

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

我唯一想混淆代码的时候,是在我感到非常羞愧的时候。回想起来,我可能会把我写过的所有东西弄糊涂。如果保护源与您的福祉成一体,请考虑转向桌面编程。

然而,如果说经验和记忆给了我一个东西的话,那就是这个领域的任何认真的新来者都会固执地提出他们自己的想法,不管它有多糟糕,它有多违背常识和最佳实践,也不管这个问题有多糟糕。如果你坚持下去,事后诸葛亮会慷慨地提醒你这一时期——畏缩等等;相比之下,一些陌生人的惩罚会显得苍白,因此我将给你一个可能的答案

使用PHP的。您需要在输出所有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;

函数重定向(){
var r=;
if(r){
window.location=prepare(“”);
}
}

JavaScript完全是客户端的。你根本无法阻止任何人访问你的网站。浏览器必须知道它才能执行它,对吗?所有这些都会使您更难维护它。要隐藏您的业务逻辑,请尝试将更多的业务逻辑放入服务器端文件,如php。当然,您可以混淆它,但任何开发人员都可以撤销它。这需要时间。在你混淆它之前,它是如何构建的并不重要。你根本无法隐藏javascript中的逻辑。“竞争查看源代码”你的JS真的有那么大的价值,人们会复制和粘贴它吗?如果这是一个保护代码以外的东西的问题,那么用户服务器端验证。如果你的竞争对手有动机“窃取你的javascript”,那么如果你混淆它也没关系。这可能会让他们花一个小时的时间来解开它。模糊JS的作用非常非常小。甚至没有提到当模糊处理程序出错和JS损坏时发生的问题。在服务器端做一些重要的事情,而不关心JS