php简单防盗链

有时我们希望访问我们网站的用户只能通过特定的链接或页面进入我们的网站页面,此时就需要实现防盗链技术。这就用到了http协议中的referer内容过滤。

    例如在我们本地有一个网页,路径为:http://localhost/http/fdl_one.php,内容如下:

<a href="fdl_two.php">click here to see more</a>
    还有另一个网页,路径为:http://localhost/http/fdl_three.php,内容如下:

<a href="fdl_two.php">I also want to see more</a>
    这两个网页想访问的页面,即http://localhost/http/fdl_two.php,均是可以各自访问到的。但是如果想过滤掉fdl_three.php的访问,即只能通过fdl_one.php的超链接进入fdl_two.php,fdl_two.php中中的内容可如下:

    
    http_test_err.php存放禁止访问信息。
    值得一提的是strpos的返回值。返回参数2字符串存在于参数1字符串中起始的位置,如果没有找到参数2,则返回FALSE。故在使用时,应先判断是否匹配,此时应严格控制返回值的类型和值,使用===符号。(因为匹配时有可能出现返回值为0的情况!!)

    真正使用中应用的更广的是某个页面可以通过自己的站点访问到,而不能通过其他站点跳转进入。此时只需修改strpos函数中参数2的内容,改为自己站点的目录名。即可过滤掉其他的访问。

首先,防盗链,php里有个 $_SERVER['HTTP_REFERER'] 
这个函数能返回上次跳转过来的网站,然后在后台进行对比,看是不是自己这边的网址来实现防盗链。这种能简单的达到效果。

还有一种防盗链就是配置apache和在服务器配置.htaccess来实现防盗链。
首先在apache找到
LoadModule rewrite_module modules/mod_rewrite.so

把前面的注释#去掉,然后在windows下创建一个txt文档,另存为之后改名字为.htaccess, 文件选择类型为所有文件
在.htaccess里:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} ..(jpg|jpeg|gif|png|rar|zip) [NC] RewriteCond %{HTTP_REFERER} !http://www.baidu.com/ [NC] RewriteRule ..(rar|zip)$ http://www.baidu.com/ [R,NC] 
RewriteRule .(gif|jpg)$ 这里放你服务器的图片地址 [R,L]
这些参数可以自己去查查。大概就是把不是从百度跳转过来的网站要访问你站点的下载链接,就直接跳转百度,把盗图链的图全部改成下面服务器图片地址。

点赞

发表评论