javascript隐藏评估

javascript隐藏评估,javascript,php,eval,Javascript,Php,Eval,我现在正在测试一种隐藏javascript的方法,这样用户就不能在源文件中到处搜索它 方法如下: 为了使应用程序正常工作,您包含了大量javascript文件。库,如jQuery、dojo和您自己的代码。这是相当标准的 有一段关键的javascript代码,如果没有它,应用程序将无法正常运行,任何好奇的用户也无法在没有它的情况下了解应用程序。这个关键部分不会被脚本标记加载。相反,一个小的不引人注目的脚本调用数据库并以一个大的长字符串返回javascript 此字符串获取eval()-ed以使其成

我现在正在测试一种隐藏javascript的方法,这样用户就不能在源文件中到处搜索它

方法如下:

  • 为了使应用程序正常工作,您包含了大量javascript文件。库,如jQuery、dojo和您自己的代码。这是相当标准的

  • 有一段关键的javascript代码,如果没有它,应用程序将无法正常运行,任何好奇的用户也无法在没有它的情况下了解应用程序。这个关键部分不会被脚本标记加载。相反,一个小的不引人注目的脚本调用数据库并以一个大的长字符串返回javascript

  • 此字符串获取eval()-ed以使其成为活动代码。但是代码是动态生成的,因此如果用户正在查看源代码或保存网站,它将不会显示。此外,您可以添加某种盐或时间戳,以防止用户试图欺骗数据库,使其暴露您的javascript内核

  • 我正试图从社区中获得反馈,我发现的用服务器端代码隐藏javascript的大多数示例都是希望在标记中包含.php文件而不是.js文件的人。这是完全不同的

    好了。这是个好主意吗?缺点是什么?

    eval()
    通常不受欢迎,但不管怎样,最大的缺点是我可以简单地嗅探HTTP请求并获取脚本。模糊处理会使这变得更加不方便,但是使用一个好的调试器,跟踪堆栈跟踪并了解发生了什么并不难

    即使资源通过SSL传输,也可以在浏览器加载后对其进行仔细阅读/操作。为了测试这一点,我访问了一个安全的网站,并使用XML HTTP检查了原始TCP响应(同步和异步使用XML HTTP)。正如所料,它是加密的,无法读取。然而,在Chrome的网络活动检查器中,相同的请求都以纯文本形式显示。

    eval()
    通常不受欢迎,但无论如何,最大的缺点是我可以简单地嗅探HTTP请求并获取脚本。模糊处理会使这变得更加不方便,但是使用一个好的调试器,跟踪堆栈跟踪并了解发生了什么并不难


    即使资源通过SSL传输,也可以在浏览器加载后对其进行仔细阅读/操作。为了测试这一点,我访问了一个安全的网站,并使用XML HTTP检查了原始TCP响应(同步和异步使用XML HTTP)。正如所料,它是加密的,无法读取。然而,在Chrome的网络活动检查器中,相同的请求都以纯文本的形式显示。

    让Javascript代码无法被人类读取(甚至对反向工程有很强的抵抗力)是很简单的,而且您不需要将其隐藏在其他代码中。但是为什么呢?一般来说,这类代码的名称是恶意软件。

    让Javascript代码无法被人类读取(甚至对反向工程有很强的抵抗力)是很平常的事,而且您不需要将其隐藏在其他代码中。但是为什么呢?一般来说,这类代码的名称是恶意软件。

    eval
    是邪恶的,至少在大多数情况下是如此。也很高兴调试代码混淆。这将是PITA,最终你会注意到,仍然会有方法打破代码自由。我只需要看我的XHR,复制我得到的,把它放到任何IDE中,并运行一个以正确方式格式化代码的工具。eval是邪恶的,如果web浏览器可以下载它,任何人都可以查看它(例如firebug net tab),为什么你要对用户隐藏脚本?值得一提的是,如果你不想让他们看到,你可能不应该把它发送到他们的浏览器,在那里用户几乎可以完全控制一切(这是正确的)。Opera的Dragonfly允许你在
    脚本中选择
    eval
    ed字符串(在内联事件处理程序中)。直接用
    标记将其包括在内实际上没有什么区别
    eval
    是邪恶的,至少在大多数情况下是如此。也很高兴调试代码混淆。这将是PITA,最终你会注意到,仍然会有方法打破代码自由。我只需要看我的XHR,复制我得到的,把它放到任何IDE中,并运行一个以正确方式格式化代码的工具。eval是邪恶的,如果web浏览器可以下载它,任何人都可以查看它(例如firebug net tab),为什么你要对用户隐藏脚本?值得一提的是,如果你不想让他们看到,你可能不应该把它发送到他们的浏览器,在那里用户几乎可以完全控制一切(这是正确的)。Opera的Dragonfly允许你在
    脚本中选择
    eval
    ed字符串(在内联事件处理程序中)。直接用
    标记将其包括在内实际上没有什么区别。不是这样(即使这个答案在其他地方被接受)做更多的阅读。不是这样(即使这个答案在其他地方被接受)做更多的阅读。