场景说明:网站访问人数很少,但是网页访问很慢,很有可能被盗链了,如果网页被盗链,web服务器的访问日志里会发现疯狂的访问请求正从四面八方涌过来,web服务器为了迎接这批访客而没有时间处理正常的页面,这种状况可能会一直持续好几个周时间。
被盗链的几种可能情况
1、在人气非常旺的网站、论坛、社区的网页里直接引用了(使用标记)你网站上的图片,或者直接在其他网页(使用flash或媒体播放插件)里嵌入了你网站上的mp3。
2、在人气非常旺的网站、论坛、社区里提供了你的资源的下载地址。
3、你网站的资源可能被一些下载软件列入了“资源候选名单”,当其他人用下载工具下载相同的文件时,下载软件会自动找上门并且从你的服务器下载。
解决方式
1、判断引用地址
所谓判断引用地址,就是判断浏览器请求时HTTP头的Referer字段的值,这个值在php里面可以用 $_SERVER['HTTP_REFERER']属性取得。几个例子来说,在正常情况下当用户在浏览 时点击一个链接去到 文件时,浏览器在发出请求jacky.mp3 资源时还会附带当刻浏览器所处的页面地址(即),所以当你的网站程序接收到下载 jacky.mp3 资源请求的时候,先判断http的referer字段的值,如果是从 自己的域名(222.com)过来的,则可以认为是合法的连接请求,否则就返回一个错误的提示信息。
这种方法通常用于图片、 mp3这种容易被人用html“嵌入”到其他网站的资源,使用这种方法可以防止你的图片直接出现在别人的网页里(或者防止mp3直接被其他网站嵌入到 flash播放器里),不过访客使用下载工具还是可以轻松下载,因为现在的下载工具一般会自动用你的域名构造一个引用地址,所以如果想再进一步防范的话,可以使用一个对应表限制每个资源的引用地址,例如将 jacky.mp3 的引用地址限制为 =12345,这样下载工具就不太可能构造一个“正确”的引用地址了。
2、使用登录验证
这个方法常见于论坛、社区。当访客请求网站上的一个资源时,先判断此请求是否通过登录验证,如果尚未登录则返回一个错误提示信息。
3、使用图形验证码
使用这个方法可以保证每次下载都是“人”在你的网站上下载,而不是下载工具。因为网上很多介绍使用图形验证码的方法,所以这里就不再重复了。这个方法的缺点是比较容易让正常的用户感到麻烦。