2013-02-20 81 views
1

这个问题是不同的,因为我不想阻止用户查看源代码。我想以编程方式隐藏部分源代码。 “重复”问题没有解决这个问题,并且在这个问题上的一些答案开始解决它。脚本完成加载后隐藏源代码

是否有可能在JavaScript脚本完成加载后隐藏代码?我想在限制性许可制度之外保护我的剧本免受窥视。

我认为,删除代码会禁用页面的任何交互部分,离开静态shell,具体取决于库。但人们/行业如何解决这个问题呢?

它只是法院执行许可制度和版权注册?还是有什么更聪明的,可以在客户端软件完成javascript

+0

http://stackoverflow.com/questions/1547257/how-to-prevent-view-source-of-page-using-javascript – PlantTheIdea 2013-02-20 23:37:24

回答

1

是否有可能在JavaScript中隐藏的代码脚本完成后 装载

=>没有

我认为删除代码将禁用任何交互部分的 页面离开静态外壳

=>您可以删除脚本牛逼的标签从HTML结构,但由于代码已经被解析您的互动部分,仍能正常工作

有更多的东西巧妙关于 客户端,可以在软件中实现的JavaScript

= >接受人们可以阅读你的缩小代码,不会花太多时间来破解它,因为无论如何他们已经拥有jQuery,主干和其他库。把你的宝贵时间用在更好的浏览器上,而不是试图隐藏当前的版本。

+0

我将不得不测试这个删除脚本标记 – CQM 2013-02-21 02:47:53

1

最好的你会得到的是使用像UglifyJS缩小像。它会混淆代码,让人们难以阅读,但你无法隐藏它。所有代码都以纯文本形式传输到浏览器,以便它可以解释它,并且不会有浏览器阻止用户看到它。

0

代码执行后无法隐藏代码,但您可以轻松地对其进行混淆。

0

这是不可能的......或者即使有办法,也会是一种局限性,因为只有那些对你的代码感兴趣的人才是程序员......所以他们只需加载你的页面不执行JS来获取来源... 对不起:/

“这将混淆代码,并使其难以供人阅读” 大部分文本编辑器或Web浏览器具有语法高亮和压痕,所以这不是一个解决方案。 (我误解了)是的,这是一个解决方案

+0

语法和缩进不是艰难的部分 - 尝试读取没有有意义的变量名称的代码。我没有说这是完美的,只是让想要使用它的人变得更难。 – Dennis 2013-02-20 23:43:26

+0

是的,我误解了;) – 2013-02-20 23:44:22

2

你不能隐藏所有的源代码,因为浏览器需要它。想想firebug或dom检查员是如何工作的。如果你改变了一些东西,它会影响你在浏览器屏幕上看到的内容。 但有办法使它“有点不可见”或“几乎不可读”。例如,如果您使用一些开发工具或脚本即时构建脚本。

看看我的网站http://elmin.org并尝试阅读源代码。正如你所看到的,你看不到太多,即使你看到,分析或理解也太复杂。 在这种情况下,使用谷歌网络工具包。

如上所述,混淆代码是一种解决方案,但这还不够,因为虽然它很难,但程序员可以破译你的代码并“窃取”你的脚本。

我想说一个想法是限制从您嵌入代码的页面外部访问您的外部js文件。因此,如果有人试图在浏览器中访问该文件,访问将被拒绝给脚本源。在php或任何您使用的服务器端语言中,您可以通过将request_uri服务器变量与您的域进行比较来控制访问。

但是你应该意识到混淆代码的风险。试想一下,它取代了清晰可读的JavaScript代码段:

window.onload = function() { alert("Hi " + username) }; 

由:

eval(unescape("var%20_0xc5b2%3D%5B%22onload%22%2C%22Hi%20%22%5D%3Bwindow"+ 
"%5B_0xc5b2%5B0%5D%5D%3Dfunction%20%28%29%7Balert%28_0xc5b2%5B1%5D+username"+ 
"%29%3B%7D%20%3B")); 

的风险是许多反病毒或其他在线防护软件会警告你的访客,这是不是可能无法检测是否安全那里的JavaScript代码试图做一些有害的事情。因此,验证可能会失败。

0

这就是为什么PHP在这个意义上的一大优势 - 它是执行服务器端 - 这样的观众永远不会看到,生产的最终标记的代码。但不要误解我的错误PHP有自己的安全问题,如MySQL注入攻击。

+0

可能node.js或骨干或其他网络服务器帮助解决这个问题?专门用于执行和呈现JavaScript元素(处理html和css元素),但不在浏览器/用户视图之外? – CQM 2013-02-21 00:09:09

+0

不是真的,因为任何真正想看到发生的事情都会看到你调用这些文件,并且只是打开它们,因为它们将具有网址 – 2013-02-21 09:34:53