有没有办法隐藏JavaScript代码?

有没有办法隐藏JavaScript代码?

问题描述:

我有这样的脚本,用<script>开始,以</script>有没有办法隐藏JavaScript代码?

人们完成可以清楚地看到,如果他们去了网页的源代码。

有没有办法避免这种情况?我的意思是使该代码不可见,就好像它在哪里PHP?

+7

编号JavaScript由浏览器执行(而PHP由服务器执行),并且对于想要查看它的人总是可见的。你可以做的最好的是混淆你的JS。 –

+0

您可能会像Google一样混淆,这只会让读者更难以阅读。无论如何,为什么要这么做?你有很有价值的代码? –

+2

不,但您可以将所有'私人'(或其他)功能转移到服务器端php,然后使用Ajax(仅运行非'私人'东西客户端)。 –

编辑:现在你已经添加了一个评论,说你实际上试图保护是视频的URL(为什么没有人只是说他们真正想要做在他们的问题?)。

答案是,您无法保护您在网页中播放的视频网址。这可以很容易地看到很多方法。任何浏览器调试工具都会显示所有来自浏览器的网络流量,这些流量很容易公开视频URL。

如果你真的想要做的是防止视频的直接链接,那么你可以使用一些技术来防止大多数直接链接。如果您进行Google搜索以“防止直接链接”,您会发现很多讨论此概念的文章。我见过的两种技术是:

  1. 在服务器的视频服务器上,检查http referrer并只将服务器视频提供给你喜欢的推荐人。尽管http referrer可以被确定的和受到教育的theif欺骗,但是这个简单的步骤使大多数用户的大多数直接链接不切实际。
  2. 在视频的URL中需要某种算法参数才能成功对您的服务器进行检查。这可以从网站上的其他内容导出,并结合了数据参考,也可以通过您的网站的每小时发布并嵌入一个有效的托管的网页,等等...

所有的JavaScript你任何想看到它的人都可以看到网页。

真正隐藏算法的唯一方法是将其放在服务器上,在服务器上执行它,并将结果放入网页中,当它由服务器呈现或使用ajax调用来检索它时。

由于JavaScript在浏览器中的工作方式,代码必须可供浏览器使用才能运行。如果它可用于浏览器,那么任何想看到它的人都可以使用它。

有些事情可以让人们更难以看到您的JavaScript,但这些只是阻碍某人下降或让他们花费更多时间来了解您的代码的障碍,但它们都可以被克服由有足够坚持性的人来做。

您可以做的最简单的事情就是通过运行免费流行的最小化工具(Google Closure或Yahoo最小化工具以及其他许多工具)来最小化您的代码。这些工具的主要目标是减少JavaScript代码的大小,但在此过程中,通过删除缩进,换行符,将本地符号重命名为短而毫无意义的内容等,使得它更不易读。还有一些模糊工具故意遮盖您的JavaScript代码,使其更难以看清/理解。

我重复一遍。所有这些工具最终都可能被击败,而他们所做的大多数工作都是为了阻止一个坚定的窥探者,这会让他们放慢脚步。

如果你真的想要保护一个算法或商业秘密或秘密代码或类似的东西,你必须把算法放在服务器上,并让代码只在服务器上执行,以便浏览器只能看到结果,而不是实际的代码。如果您想要保护您的实际代码并不重要,那么在大多数情况下,保护您的实际代码并不重要。商业上的成功并不是通过保守秘密来实现的,而是通过了解并通过以合适的价格满足客户的需求而实现的。

+0

我的猜测是,在大多数情况下,这是不可能的(比如操纵页面上的元素)或者不是一个真正的增值主张(技术或资源的混淆并不真正有价值)。对于大多数想要这样做的人来说,我的猜测是这两个条件中的一个,他们甚至可能不应该打扰。 –

+0

@JaredFarrish - 我同意。这很少值得担心。更重要的是担心事实会让你的事业取得成功。 – jfriend00

+1

虽然使用调试器很容易找到视频链接,但某些带付费视频内容的网站使用的技术要求使用经过身份验证的cookie来获取视频资源链接,然后从该链接播放,有些使用更复杂的方法,如将整个视频切成许多部分,通过从视频播放器内发送许多请求/响应来获取视频内容。这样,至少像视频下载插件不能直接缓冲或下载视频资源。如果视频是业务的主要部分,禁止直接或未经授权的访问是一个值得关注的问题 – Birey

不,它具有普通的JavaScript,它在客户端运行,这意味着它必须可以被运行它的用户的浏览器访问。你可以尝试混淆你的代码,或者像服务器端JS(V8)这样的新技术,但是对于传统的JavaScript,它必须运行在客户端。

+0

谢谢!这只是一个视频,我不想让它热连接... – Rosamunda

+5

@RosamundaRosamunda - 您在Firebug或Chrome中使用控制台实现如果浏览器可以播放它,我可以看到您的视频网址,对不对? –

+0

是的,但我有一个亚马逊帐户,我打算在链接上放置一个失效日期...希望有助于防止热链接... – Rosamunda

编号PHP代码对用户不可见,因为它在服务器上执行。 JavaScript代码被发送到用户的计算机并在那里运行,因此它们对他们可见。

最好的选择是obfuscate你的代码,使其难以阅读。这只是一个不便之处;如果任何人关心足够他们将能够找出你的代码。

您无法隐藏它。但是你可以混淆javascript,至少它是不可读的。

http://javascriptobfuscator.com/

是的,你可以用SSJS技术在服务器上执行。

退房NodeJS.org

+0

我不认为这会有所帮助。 – Birey

+0

感谢您的宝贵意见。 – AlienWebguy

+0

感谢您考虑它的价值。 – Birey

JavaScript是一种客户端脚本语言,所以它不可能从客户端隐藏。你可以混淆它,但一些聪明的人可能会混淆它。

如果你真的想隐藏你的代码,你可以通过AJAX调用一个PHP脚本,虽然这可能是服务器很重。