加密网站地址——从根本解决盗连

作者:郝春利

转贴请注明出处:http://blog.csdn.net/froole

 网站防止图片等内容盗链的方法多种多样,其中最常用的方法就是通过HTTP访问头信息,判断访问来源。理解TCP/IP通信员里的读者都知道,由于HTTP头信息处理是在OSI模型的应用层,所以,编造一些假的HTTP头信息发送给服务器,并不需要什么特殊的技术或者工具。
下面的演示中,是利用wget命令模拟Firefox2浏览器进行HTTP基本认证的例子。依照它的访问,HTTP服务器根本就分辨不出来是火狐浏览器还是wget发送的HTTP请求,而且,访问来源也被欺骗了。


            
通过HTTP头信息防止盗链,是一种典型的防君子不防小人的做法。


面向网络的WEB内容,都是公开的,大多数情况是不需要考虑盗链问题的。如果要限制某些内容,仅针对于某个特定群体用户的浏览,可以通过CGI进行用户认证。例如SNS、论坛以及WEB邮箱等等都具有这种功能。而访问来源只是作为访问日志的一部分,用来搜集用户活动信息,并不是系统运行所必需的内容。

综上所述,由于HTTP通信协议自身的原因,防止盗链的方法中,判断头信息是无法做到真正防盗链的。想要真正做到防止盗链只能通过以下两个途径:
1.通过CGI进行用户认证,防止无关人员对目标内容的访问:
  虽然,此方法无法防止拥有访问权限会员“盗链”,但是,对于防止不相干人员的盗链还是非常有效的。
2.动态变换访问路径:
  此种防止盗链的方法很直接,就是让盗链者得到的地址是无效的。而这个地址,只有在最先访问的用户手里才有效。以下,本文将就如何对原始链接地址加密,进行讨论。

本文所介绍的加密链接地址的方法,是一种利用XOR算法的简单的共有钥加密。
电脑技术中经常使用的加密方法有两种,一种是公开钥加密(如SSL),一种是公有钥加密(也叫秘密钥加密,如AES、BrowFish等)技术。公有钥加密就是加密方和解密方拥有共同的钥匙进行加密、解密。缺点是一旦钥匙丢失,那么,所有的加密处理都将报废,被加密内容可以被任何拥有钥匙的人得到。公开钥加密方法可以解决这一难题,但是,本文中所介绍的链接地址加密处理,全部在服务器内部进行,不涉及到泄漏加密钥匙的问题,而且,加密钥匙随着访问不同而不规则改变,也不存在泄漏解码钥匙的问题,所以将采用更简单的共有钥加密的方法。
链接地址加密原理如下:
1.当新的session被创建时,在session内乱数生成一个共有加密钥匙。
2.图片显示连接时,服务器端CGI自动对诸如内容地址、数据库中的内容ID等进行加密,生成加密后的链接地址。
3.访问加密后链接地址,服务器提取session中的加密钥匙,解密加密内容,返回请求内容。

为什么使用XOR算法:
比如一些图片网站,如果对URL进行加密,若采用复杂的加密算法,势必会增加服务器的负担。
考虑到性能方面,笔者使用了XOR算法。虽然此算法容易被破解,但是,加密钥匙的生存时间短暂,仍旧可以保持较高的安全性。
以下分别是使用了Java语言和PHP语言的加密代码,谨供参考。

 

Java代码:

 

PHP代码:

<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
转贴请注明出处:http://blog.csdn.net/froole

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值