对你所编制的 Web 程序源代码加以保护

2008-02-23 07:11:53来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

这里的所谓“Web源代码”,指的是客户端的诸如HTML、Javascript之类的东西,当你辛辛苦苦写出来一个web应用程序时,可能希望自己的劳动成果不被别人任意剽窃修改,但是这些东西如果不加处理,很容易被人拷贝。

其实说实话,我个人认为,作为描述性的语言,web源代码没有经过编译,也就是说,无论怎么加密,它在客户端都会最终以源代码形式出现,要绝对的防止被察看是不可能的。但是,我们还是要讨论这个问题,因为虽然没有绝对,但是相对比较安全就好了,正如系统的安全没有绝对,只有相对一样。只要能让绝大多数人束手无策,我们的目的也就达到了。

首先,禁止右键是一个比较常见的方法,这无论如何是不能彻底阻止用户察看源代码,但是既然无法防止用户察看代码,就只能把代码加工,让人看了也无法理解其意义。

一个比较经典而有效的方法是利用的js的escape方法,将源代码经过escape编码后,大部分文字被转换成了型如%xx的编码,unicode字符被转换成%uxxxx格式,于是看起来一片混乱。使用的时候先将这段编码作为数据,利用unescape转换回原貌,再用js写进需要的位置,于是便可正常使用了。

这个方法原理简单,而且可以反复调用,将源代码经过数层加密(将解密的程序本身也作为源代码进行加密),已经足以让大部分的人摸不着头脑了。他的缺点是编码效率不高,经过编码后数据量增加很多。而且这种编码要解也很容易。

仿照这个原理,其实你可以自己写出自己的算法来代替escape,不过因为这个部分源代码也是明文,所以其实意义不大,只能唬唬那些利用现成工具解码的人,稍微会编程的人都可以利用你的源代码部分,修改一下输出,得到你的代码明文。

作为全球最大的软件商,微软公司也意识到了脚本的知识产权保护问题,因此在IE5以上的版本里加入了对编码脚本的支持,这里的“编码”和上面所述的略有不同,这是通过微软专门的wse(windows script encoder)进行脚本编码,其范围也不仅仅局限于客户端脚本,它也可以对wsh,甚至服务器端的ASP脚本进行编码,经过编码的脚本看起来是一堆乱七八糟毫无疑义的字符(好像unicode会不经编码原封不动的保留下来),在运行的时候在脚本引擎内部进行解码,由于解码算法是脚本引擎内置的,所以一般人难以解出源代码。另外,由于解码中要进行完整性效验,即使unicode以原码显示出来了也不能被修改,修改哪怕是一个字节,就会使整段代码失效。

这个方法目前看来很安全,还没有现成的工具对其进行破解。但是要知道,这些算法是可逆的,也就是说迟早会有人找出其算法,我甚至猜测script engine本身提供了编码解码的接口,可以直接调用的。解密工具迟早要出来。而且这个加密方法有个很大的缺陷,就是必须要求IE5以上才能用,要知道,IE4的用户不在少数,因此在很大程度上限制了推广使用。

真的没有两全的办法了吗?

写到这里,我自己产生了一个想法:利用随机密匙 固定或随机算法进行加密,只是一时想法,还不成熟,而且也只是可以骗过一般人而已,不妨写下来供参考:

先想一种需要密匙的算法,比如xor,在服务器端写好加密算法,当用户访问此页的时候生成一个随机密匙,将解密算法以及加密后的数据发到客户端页面上,而在之前将此次会话生成的密匙通过某种特别途径发给客户端(比如服务器发来的cookie),然后在客户端读出cookie里的密匙进行实时解密。由于不带过期参数的cookie是存在内存里的,在硬盘里找不到,因此除非用户知道写cookie的那个页面并且察看其http头(同时还要向服务器发去维持本次会话的sessionID以防止密匙改变),否则是无法解密的。由于向客户端发送cookie的页面可以随机(可以在加密页面出现之前的任意页面),而且密匙甚至算法均可随机,找到密匙,算法,数据三者相对应的过程相当之繁琐,可以吓倒不少的人。

这种加密法是否可行还有待探讨,只是我一时想法而已,有空的时候我会试验一下,看看到底能不能用。

关键词:
【推荐给好友】【关闭】
最新五条评论
查看全部评论
评论总数 0 条
您的评论
用户名: 新注册) 密 码: 匿名:
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:危险无处不在 账号防盗防骗的小经验

下一篇:如何在无法打开驱动器情况下杀毒的方法