隐藏javascript以免在浏览器中显示

时间:2009-07-24 10:50:20

标签: php javascript hide

我在我的文件中使用了一些javascripts。但是当我们查看源代码时,它会显示我们的javascript。有什么方法可以隐藏我们的JavaScript使用php在浏览器中显示。

7 个答案:

答案 0 :(得分:6)

javascriptobfuscator.com有一个免费的javascript混淆器。它不会阻止专门的人“窃取”您的代码,但正常的复制和粘贴并不容易。

另见这个问题:How can I obfuscate (protect) JavaScript?。它包含一些非常好的答案,并通过默默无闻来解释这是如何安全的。

答案 1 :(得分:5)

这就是它的工作原理,每个人都可以看到。 但是你可以对它进行模糊处理。

答案 2 :(得分:3)

由于Javascript在浏览器内部执行,在客户端的计算机上,必须将其发送到该客户端计算机。

所以,无论如何,客户必须能够阅读它。所以,不,你不能阻止你的用户看到JS代码。

你可以obfuscate它,但是真正想要找到你的来源的人总是能够(如果很难发生事件)......但问题是:为什么你会阻止你的用户看到JS源代码,如果他们想要?

作为旁注:使用缩小/混淆的JS代码,当你遇到错误时,追踪真的很难......(你真的必须保持不 - 开发/测试机器上的混淆版本)

答案 3 :(得分:2)

我建议缩小它,这将删除代码中的注释和空格。如果您不希望变量名称可见,那么您需要对其进行模糊处理。

答案 4 :(得分:1)

我不确定这是否有效,我可以尝试一下。但基本上是:

<script type="text/javascript" src="MyScript.php"></script>

在PHP文件中添加某种引用以检查请求它的页面或最后一页是什么。然后,如果它是你自己的一个页面,那么回显JS,如果没有,那么不回应它。它仍然可以读取JS,但更难以查看源代码并对其进行去混淆。所以你也可以混淆.php文件中的代码。

答案 5 :(得分:0)

没有。 javascript在客户端执行。

答案 6 :(得分:-2)

还有另一种方法可以为最简单的用户隐藏Javascript

只需test here to try finding the javascript behind the textbox ...

然而,有经验的用户仍然可以看到该脚本 - 请参阅此帖子的底部以了解原因 -

想法是将您的javascript函数放在单独的“.js”文件中。加载源PHP或HTML页面时,而不是直接使用

调用它
<SCRIPT language="JavaScript" SRC="original_file_to_hide.js"></SCRIPT>

,你将包含一个标题php脚本,它将“mysource.js”文件复制到随机的“kcdslqkjfldsqkj.js”文件中,并修改你的HTML文件以便调用

<SCRIPT language="JavaScript" SRC="temporary_copy_of_the_file.js"></SCRIPT>

代替。之后,只需删除服务器上的副本kcdslqkjfldsqkj.js文件,当用户查找源代码时,浏览器将链接到一个消失的文件!!!

所以这是理论,接下来,有一个小问题解决方法:如果HTML / PHP文件加载太快,你的脚本将在浏览器出现之前从你的服务器中消失加载脚本的时间。

因此,你需要

  1. 将文件复制到其他随机名称
  2. 在源PHP文件中加载文件
  3. 在加载HTML / PHP文件后等待几秒钟 ......之前
  4. ...正在删除文件
  5. 以下是HTML / PHP“ test.php ”页面的来源,该页面将显示给最终用户:

    <?php
        //javascript source code hiding technique : Philippe PUECH, 2013
    
        //function thanks to Stackoverflow, slightly modified
        //http://stackoverflow.com/questions/4356289/php-random-string-generator
        function RandomString()
        {
            $characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            $randstring = '';
            for ($i = 0; $i < 10; $i++) 
                {
                    $randstring = $randstring.$characters[rand(0, strlen($characters))];
                }
            return $randstring;
        }
    
        //simple header script to create a copy of your "precious" javascript ".js" file
        $original_filename="functions.js"; //find a better (complicated) name for your file
        $hidden_filename=RandomString().".js";  //temporary filename
        copy($original_filename,$hidden_filename);
    
    ?>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Catch my Javascript if you can !</title>
    
    </head>
    
    <SCRIPT language="JavaScript" SRC="<?php echo($hidden_filename); ?>"></SCRIPT>
    
    <script type="text/javascript">
    </script>
    
    <body onLoad="javascript:testfunc();">
        This is the page with anything you like !
    </body>
    
    </html>
    <?php
        sleep(1);
        //you can comment following line
        echo "finished !";
        unlink($hidden_filename);
    ?>
    

    以下是“ functions.js ”文件的来源,该文件将隐藏给用户。

    // JavaScript Document
    function testfunc(){
        alert("It works...");
    }
    

    然而,正如评论中所说,浏览器的开发人员工具会将脚本保留在内存中,并使其对于好奇的用户仍然可见......; - ((