有没有办法为我的网站禁用或加密“查看来源”,以便我可以保护我的代码?
答案 0 :(得分:41)
Fero,
你的问题没有多大意义。 “查看源”显示HTML源 - 如果您对其进行加密,则用户(和浏览器)将无法再读取您的内容。
如果您想保护您的PHP源代码,那么有Zend Guard之类的工具。它会加密您的源代码并使其难以进行逆向工程。
如果您想保护JavaScript,可以使用YUI Compressor缩小它。它不会阻止用户使用您的代码,因为与用户一样,浏览器需要能够以某种方式读取代码,但至少会使任务更加困难。
如果您更担心用户隐私,则应使用SSL确保敏感信息在线路时加密。
最后,技术上可以加密页面的内容并使用JavaScript来解密它,但由于这依赖于JavaScript,有经验的用户可能会在几分钟内打败它。加上所有这些问题都会出现:
所以我不建议你使用这个解决方案。
答案 1 :(得分:8)
你无法真正禁用它,因为最终浏览器仍然需要读取和解析源以便输出。
如果您的源代码中有重要内容,我建议您将其隐藏在服务器端。
即使您对HTML源进行加密或混淆,最终我们仍然可以评估和查看它。例如,使用Firebug,我们可以看到源代码,无论如何。
如果您正在销售PHP软件,可以考虑Software as a Service (SaaS)。
答案 2 :(得分:2)
因此,您希望加密HTML源代码。你可以使用一些javascript工具加密它,但要注意,如果用户足够聪明,他将始终能够解密它,做与浏览器应该做的事情:运行javascript并查看生成的HTML。
编辑:请参阅此HTML加密器作为如何加密它的示例: http://www.voormedia.com/en/tools/html-obfuscate-scrambler.php
EDIT2:并且......看到这个如何解密它:)
答案 3 :(得分:2)
简短回答不是,html是一种开放式文本格式,如果页面呈现人们将能够看到您的源代码,您会做什么。您可以使用javascript来禁用右键单击,这可以在某些浏览器上运行,但任何想要使用您的代码的人都知道如何避免这种情况。您还可以让javascrpit在存储此编码后发出html,这将对开发,可访问性和加载速度产生不良影响。毕竟安装了firebug的任何人仍然可以看到你的HTML代码。
你的html中也有非常多的价值,你的真实IP在服务器代码中,在你的服务器上保持安全和健全。
答案 4 :(得分:2)
另外你为什么要这样做,这似乎是一件蹩脚的事情:P
答案 5 :(得分:2)
这根本不可能。正如(几乎)所有人都说的那样,您的用户的Web浏览器需要能够读取您的html和Javascript,而浏览器的存在是为了为用户服务 - 而不是您。
这意味着无论你做什么,最终会在用户的机器上出现类似的东西:
<html>
<body>
<div id="my secret page layout trick"> ...
</div>
</body>
</html>
因为否则没有任何东西可以显示用户。如果在客户端存在,那么您已经失去了对它的控制。即使你设法说服地球上的每个浏览器制造商都没有通过“查看源”选项提供 - 也就是说,你知道,不太可能 - 该文本仍将存在于该用户的机器上,并且有人会弄清楚如何去做。这将永远发生,浏览器将始终存在,以便在所有其他用户之前为其用户提供服务。 (希望)
对于您的所有Javascript都是如此。让我再说一遍:您发送给用户的任何内容都不是该用户的安全或秘密。通过Javascript hack加密是愚蠢的,无法在任何有意义的意义上工作。
(嗯,实际上,Flash和Silverlight会发送二进制文件,但我不认为它们是加密的。所以它们至少恼人的来获取数据。)
正如其他人所说的,保持用户保密的唯一方法就是不向他们提供:将逻辑放入服务器并确保永远不会发送。例如,您的用户永远不会看到您用PHP(或Python / Ruby / Perl / Java / C ...)编写的所有代码。这是例如为什么谷歌还有业务。与他们从未寄给你的东西相比,他们给你的东西基本上是无趣的。而且,因为他们意识到这一点,他们会尽可能地将他们发送给你的大多数事情尽可能地公开。因为它是基础设施 - Terrabyte巨大的地图数据库和寻路软件,而不是您可以点击和拖动的时髦地图 - 您正在交易您的隐私。
另一个例子:我不确定你是否记得在网络发展初期人们使用了多少技巧来阻止人们将图像保存到磁盘。你最后一次遇到其中一个是什么时候?知道为什么?因为一旦数据在用户的计算机上,她就会控制它。不是你。
因此,简而言之:如果您想保留用户的秘密,请不要将其提供给她。
答案 6 :(得分:1)
我认为没有办法做到这一点。因为如果您加密浏览器将如何理解HTML?
答案 7 :(得分:1)
没有。浏览器不提供HTML / javascript禁用该功能的能力(谢天谢地)。此外,即使您仍然可以使用纯文本传输HTML,以便HTTP sniffer阅读。
你能做的最好的事情就是以某种方式模糊HTML / javascript以使其难以阅读。但是,Firebug和IE 8's debugger等调试器将从DOM重构它,使其易于阅读,
答案 8 :(得分:0)
事实上,您可以禁用右键单击功能。然而,这样做是没用的,因为大多数浏览器现在都内置了检查器工具,无论如何都显示了源。更不用说存在其他变通方法(例如保存页面,然后打开源,或者只是使用热键)来查看html源代码。禁用右键单击功能的教程在网络上比比皆是,因此如果您有浪费时间的压倒性冲动,快速谷歌搜索将指向正确的方向。
答案 9 :(得分:0)
没有完整的证明方法。
但是您可以使用以下方法使用简单的Hack来欺骗许多人:
“ window.history.pushState()”和
在正文标签中将oncontextmenu="return false"
添加为attribute
您还可以使用“ javascript混淆”进一步使事情复杂化,但不会完全隐藏它。
“ 检查元素”可以显示视图源以外的所有内容。
答案 10 :(得分:-1)
是,您可以通过javascript动态呈现整个网站,javascript会被加密/打包/混淆,就像没有明天一样。