【问题标题】:How can I "cloak" my Javascript and CSS files using PHP?如何使用 PHP “隐藏”我的 Javascript 和 CSS 文件?
【发布时间】:2012-01-01 05:14:45
【问题描述】:

如果有人在浏览器中打开我的 .js 或 .css 文件之一,是否可以显示不同的内容?我将 Apache 配置为在 .js 和 .css 文件中执行 PHP 代码。如何检测文件是网页请求的还是用户直接查看的?

编辑:我知道没有办法 100% 隐藏我的文件。我正在寻找阻止人们复制我的代码的最佳方法。

【问题讨论】:

  • 你不能。你能做的最好的就是obfuscateminify 它。
  • 这又是一个“你不能在不提供信息的情况下向某人提供信息”的案例

标签: php javascript html css


【解决方案1】:

在浏览器中运行的网络上没有任何东西可以真正被隐藏。浏览器只是请求文件的代理,与请求文件以供任何用途的任何代理相同。服务器不知道浏览器下载 JS 文件作为网页的一部分与用户下载 JS 文件以查看它之间的区别。对于服务器来说,它们只是下载文件的请求。服务器不知道要如何处理它。

更进一步,JS 文件和 CSS 文件通常保存在磁盘缓存中(出于性能原因),可以独立于服务器进行检索。

您唯一能做的就是通过缩小和混淆来模糊您的代码。缩小是有道理的,因为它也让事情变得更有效率。我个人不会推荐混淆,因为它并不能真正阻止坚定的观众——它只会稍微减慢他们的速度。如果浏览器可以理解 JS 文件并运行它,那么黑客也可以。

一般来说,人们似乎认为他们的 javascript 在某种程度上比实际更重要。如果您确实有某种确实需要保护的秘密算法,那么最好的办法是将其代码保留在服务器上,并根据需要使用 ajax 调用从您的客户端 javascript 访问它。

【讨论】:

  • 我认为您的最后一段确实总结了这一点。如果您不希望人们看到它,请不要将其发送给他们。将您的秘密保存在服务器上。
  • +1。继您的最后一段之后,我认为有些人对自己的代码有多好也有过分夸大的感觉,就像有成千上万的人排队复制它一样。 (我并不是要暗示 OP 就是这样的人;我认为这是所有 Web 开发人员在某个时候都会问的问题。)
【解决方案2】:

您可以通过检查 HTTP Referrer 标头来检测文件是否被用户直接调用。 但它不会阻止用户签入 Firebug 或等效工具以查看脚本的源代码。

【讨论】:

  • 或者只是根据需要设置引荐来源标头 - 任何确定的黑客都可以做的事情(尽管从磁盘缓存中获取它更容易)或在网络流量分析器中捕获它。没有办法允许浏览器访问而不允许人工访问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
  • 2012-09-25
相关资源
最近更新 更多