Cn.modao 发表于 2007 年 1 月 15 日 17:42:05

来看下这段代码有什么错?

<?php

$ADMIN = "http://www.mybbx.com/";//盗链返回的地址
$okaysites = array("http://www.mybbx.com","http://mybbx.com"); //白名单
$ADMIN = "http://mgrp.freespace.jp/hbleaf/filedownload/";//下载地点1
$ADMIN = "";//下载地点2,以此类推

$reffer = $HTTP_REFERER;
if($reffer) {
$yes = 0;
while(list($domain, $subarray) = each($okaysites)) {
if (ereg($subarray,"$reffer")) {
$yes = 1;
}
}
$theu = "url"."_"."$site";
if ($ADMIN[$theu] AND $yes == 1) {
header("Location: $ADMIN[$theu]/$file");
} else {
header("Location: $ADMIN");
}
} else {
header("Location: $ADMIN");
}

?>

不管怎么弄!都当盗链处理了!

Cn.modao 发表于 2007 年 1 月 15 日 17:46:48

难道素因为windows主机的缘故?

长天 发表于 2007 年 1 月 15 日 17:50:39

代码不全
PHP不明白

Cn.modao 发表于 2007 年 1 月 15 日 17:51:15

原帖由 大虫 于 2007-1-15 17:50 发表
代码不全
PHP不明白


全部代码就这点了!
仅此而已

Cn.modao 发表于 2007 年 1 月 15 日 17:52:48

原帖由 大虫 于 2007-1-15 17:50 发表
代码不全
PHP不明白

要8You帮偶写个js的防盗链程序也可以嘛!:lol
隐藏真实地址,不能用工具下就行了!
跟上面那个类似就行!
刻意从多个地址下载!:lol

长天 发表于 2007 年 1 月 15 日 17:54:23

老大,代码能不能供工整些严重影响阅读的说

应该是逻辑错误吧

Cn.modao 发表于 2007 年 1 月 15 日 17:56:53

原帖由 大虫 于 2007-1-15 17:54 发表
老大,代码能不能供工整些严重影响阅读的说

应该是逻辑错误吧

偶也是在网上找的~~~
反正我左试右试上试下试都安盗链给我处理了!

长天 发表于 2007 年 1 月 15 日 18:04:48

……
虽然我不明白php。但是很明显就是你iz这个防盗链的代码是根据用户下载的时候访问的当前地址是否符合规定的网址,如歌符合就下载,不符合就拒绝,或者转向。属于防盗链中比较简单的

如果要用js的话
解决问题:
1.用js获取并截取下载页面网址
2.判断是否符合,如果符合,就将下载ID作为参数传给另外一张叶子,然后,这张叶子提供下载
3.当用户点击一个下载链接的时候,传递一个下载ID,

---
但这样的话,也就没办法提供正确的下载地址了,除非知道下载叶子的网址。JS防盗链不理想啊

写是可以写,但是js不熟悉,速度慢啊!!

另外,java和js是俩吗事情

Cn.modao 发表于 2007 年 1 月 15 日 18:09:09

原帖由 大虫 于 2007-1-15 18:04 发表
……
虽然我不明白php。但是很明显就是你iz这个防盗链的代码是根据用户下载的时候访问的当前地址是否符合规定的网址,如歌符合就下载,不符合就拒绝,或者转向。属于防盗链中比较简单的

如果要用js的话
解 ...
:'( :'( :'(

长天 发表于 2007 年 1 月 15 日 18:11:10

防盗链原理2007-01-09 14:51防盗链原理:

http标准协议中有专门的字段记录referer

一来可以追溯上一个入站地址是什么

二来对于资源文件,可以跟踪到包含显示他的网页地址是什么。

因此所有防盗链方法都是基于这个Referer字段

网上比较多的2种

一种是使用apache文件FileMatch限制,在httpd.conf中增加 ( 其实也可以将把下面的语句存成一个.htaccess文件),并放到你的网站的根目录(就是www/html目录),这样子别人就没有办法盗连你的东东了~~

SetEnvIfNoCase Referer "^http://yahoo.com/" local_ref=1

Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1


这种很方便禁止非允许访问URL引用各种资源文件

请大家注意,把第一句"^http://yahoo.com/"改为你的网站,比如我的网站是: http://www.linji.cn
我应该这么写的
"^http://www.linji.cn/"

第二种是使用rewrite,需要增加apache的mode_rewrite,支持.htaccess文件目录权限限制
在虚拟主机根目录增加.htaccess文件,描述从定向,把非本地地址refer的图片文件都从定向到警告图片或者警告网页上。

首先要确认你的服务器或空间的服务器解译引擎为Apache2,还有支持.htaccess客户设置文件,
如果你有自己的服务器就请先对./conf/httpd.conf 文件做以下修改
找到:#LoadModule rewrite_module modules/mod_rewrite.so
把前面的 # 给去丢
找到等一个 AllowOverride None 改为 AllowOverride All
重启Apache2服务器

接下就是做一个 .htaccess 文件了,其 .htaccess 文件内容为

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://aaoo.net/.*$
RewriteCond %{HTTP_REFERER} !^http://aaoo.net$
RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net/.*$
RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net$
RewriteRule .*.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ http://down.yoyo.com.ru/err.html

其中有色的地方都是要改为你的:
红色:就是改为你提供下载页面的地址,也就是只有通过这个地址才可以下载你所提供的东东。
蓝色:就是要保护文件的扩展名(以|分开),也就是说以这些为扩展名的文件只有通过红色的地址才可以访问。
绿色:如果不是通过红色的地址访问蓝色这些为扩展名的文件时就回重定向到绿色地址上。

这个方法有个好处是,不同的虚拟主机用不同的描述定义。

接下就是怎么用 .htaccess 文件来实现防盗链了。
首先要在空间上建两个目录(当然目录名随你),一个为 web 另一个为 down ,
web 是用来放下载页面的(或下载程序),down 当然就是放你提供的东东的啦,
把 .htaccess 文件的红色部分改一下,改为http://你的域名/web。蓝色部分
改为你要保护文件的扩展名。绿色部分改为http://你的域名/web。改后保存
.htaccess 文件把它上传到 down 目录。

还有第三种:

我在解决plog禁止盗链的时候,发现个问题,也算个好方法。
plog把所有资源都自己管理起来,用resserver.php来动态显示,这样统一的入口方便添加权限操作。
同时造成上面2种方法无法使用,因为不再是apache直接访问资源文件,而是php通过文件读取。

因此只能在代码中做手脚:在读取资源文件输出之前,加如下判断代码


引用

$referer = $_SERVER['HTTP_REFERER'];
$selfurl = $_SERVER['HTTP_HOST'];
if(false == strpos($referer,$selfurl))
{
echo '非法盗链!';
exit(1);
}





这里有些偷懒,直接看引用地址中是否包含host地址,不过原理就是这样,判断referer是否是本站地址。

我们常常在下载的时候,也碰到盗链网站无法下载,报盗链的问题。要下载这类文件最简单的方法就是改referer

比方flashget中,网址下面的"引用"一栏中,直接填写下载地址就可以了。

CSS实现简单的图片防盗链代码

img {
filter:expression(
this.不能去掉 ? "" :
(
(!this.complete) ? "" :
this.runtimeStyle.filter = ("progid:DXImageTransform.Microsoft.AlphaImageLoader(src=http://www.webjx.com/htmldata/2005-08-22/'" + this.src + "')") +
String(this.不能去掉 = true).substr(0, 0) +
(this.src = "http://siyizhu.com/styles/nicky/images/clear.gif").substr(0, 0)
)
);
}
页: [1] 2
查看完整版本: 来看下这段代码有什么错?