gpt4 book ai didi

php - 使用 PHP 重命名 JavaScript 变量和函数

转载 作者:行者123 更新时间:2023-11-30 13:18:27 25 4
gpt4 key购买 nike

我搜索并找到了另一个问题非常接近的问题,但结果是 YUI Compressor,但我发现它没有用。

我使用 php 来混淆我的 JavaScript 代码,但这还不够。我需要一个可以运行的 php 脚本,然后在混淆之前将所有函数和变量重命名为随机名称(仅字母)和 ofcause。

我见过一些,但它们要么是像 Java 这样的独立程序,要么是你需要付费的东西,我不能使用它。

有人知道可以做到这一点的类或代码片段吗?

如果 YUI Compressor 真的可以做到这一点,有人能指出一些帮助我如何将它实现到 php 中吗?

最佳答案

在写完这篇冗长的回复后,我开始想知道为什么您首先需要混淆 javascript 代码? Javascript 代码本质上是公开的,任何查看您页面的人都可以看到结果。如果您有 secret /专有的事情需要做,请查看 AJAX 之类的东西,或者以其他方式回调您的服务器以进行处理并让它为 javascript 吐出结果。任何人都可以看到您在 javascript 中所做的任何处理。混淆只会使调试变得更加困难,并不能保证防止有人破解代码。

通常使用 javascript 来控制呈现、将服务器调用的结果解析到文档中并验证用户输入。任何你想做的 secret ,在服务器端做,他们看不到正在发生的确切代码。

如果你仍然想走重命名路线,我的回答是:

我还没有花时间去谷歌什么是 YUI 压缩器,但你所描述的听起来像是你需要解析任何 javascript,然后从那里开始重命名函数和变量。我看到了一些问题

  • 如果/当您的 javascript 使用内置变量名称时,例如 documentwindow和类似的内置函数,如 .getElementById() .那些您无法触及的,或者脚本无法执行其预期的操作。
  • Javascripts 在浏览器的上下文中执行,并且可能使用来自其他 javascript 文件的函数/变量,例如 HTML

    <script type="text/javascript" src="a.js"></script><script type="text/javascript" src="b.js"></script>
    b.js包含在 a.js 之后, b.js可以引用和使用 a.js 中的任何函数或变量因此,如果您打乱名称,则必须确保在 b.js 中进行了任何引用。适本地更新为您的新名称。

  • 根据您想要重命名的频率,您需要权衡让代码更容易被破解还是完全破坏浏览器缓存

    • 只修改名称一次并保留结果 - 然后浏览器将正确缓存响应并且您的网站应该运行良好,但是由于名称在调用之间是一致的,因此有人会更容易破解重命名。虽然对于此解决方案,您不一定需要 PHP,只需要任何语言或脚本并运行一次
    • 修改名称每个 session - 可能是最好的解决方案和中间路线,尽管它需要您保留与每个 session 关联的额外内存以更改名称,以便任何对新 java 脚本的请求来自同一 session 的文件按应有的方式重命名(大多数现代浏览器和服务器设置将允许缓存相同命名的 javascript 文件,因此如果 a.js 中的任何函数/变量被另一个 javascript 文件使用,则如第 2 点所述)必须相应地更新
    • 修改 javascript 文件每个请求 - 这可能需要您禁用 javascript 文件的缓存,因为对页面的每个请求都需要下载新的 javascript 文件,即使用户重新加载相同的文件也是如此页。这将大大降低页面加载性能(您必须再次重命名所有函数并生成一个新的 javascript 文件,然后由浏览器下载并由其解析)并且还会增加带宽消耗,但是不会有一个页面的两个脚本一样。

总的来说,这看起来不像是一个你想要承担的 1 人(甚至 2 或 3 人)项目(除非你手头有很多时间,但事情会发生变化),可能会有已经有类似这样的东西,或者你可以从中 fork 出来并根据你的需要进行修改的东西。从本质上讲,我认为您想要做的工作将超出其值(value)。

关于php - 使用 PHP 重命名 JavaScript 变量和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11170908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com