« dllhost占用大量内存问题的相关资料如此监控,还有何隐私可言 »

利用isapi_rewrite防盗链

密陀僧发布 存档 2006年10月19日 次浏览
利用isapi_rewrite可以实现类似于Apache的伪静态路径,利用其检查refer的功能我们还可以实现防盗链。该软件可以在 http://www.helicontech.com/download/下载,是一个共享软件,但是有一个LITE版本是免费的,基本上可以实现我们需要的功能。安装的步骤我就不详细说了,具体说说httpd.ini的设置。
首先,必须要保证httpd.ini有可写权限,设置isapi_rewrite安装文件夹everyone具有可修改权限后,去除该文件的只读属性。
httpd.ini默认设置如下:

RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*

我们在它后面加上一句

RewriteRule .*\.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O]

即可实现gif/jpg/png/exe/rar/zip文件的防盗链,盗链页面显示的是/block.gif。block.gif是一个体积较少的图片文件,我们可以在上面打上自己网站的版权标志和防盗链声明。
如果按照上面设置,则除本站以外的所有网站均不能使用这里的图片,如果要允许一些例外的网站比如google,baidu以及其它一些非营利性网站引用该怎么办呢?我们可以用如下正则表达式来实现

RewriteCond Referer: (?!http://(?:www\.0e2\.net|www\.google\.com|www\.baidu\.com)).+


如果想允许所有google子站和baidu子站形如images.baidu.com,images.google.com等站则做如下设置:

RewriteCond Referer: (?!http://(?:*\.0e2\.net|*\.google\.com|*\.baidu\.com)).+


至此,一个相当有效的防盗链系统已经出来了,但如上设置有一个问题,如果浏览者浏览了盗链页面后访问本站页面,则被盗链图片的缓存会影响图片的正常显示。把

RewriteRule .*\.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O]

改为

RewriteRule .*\.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O,N]

方可。参数N的意思是重新从站点请求文件而不是从本地缓存读取。

本文参考:http://www.williamlong.info/archives/266.html

转载请注明:转载自漱风斋[ http://0e2.net/ ]

本文链接地址:http://0e2.net/post/512.html
  • 呵呵,还可以增加网站安全性哈
  • 评论作者:Fdream——2006-10-20 9:03:34 回复该留言
  • 娘的!
    这个也有BUG?发表评论后居然只在侧栏有更新,文章后面咋就看不到咧?
  • 评论作者:Fdream——2006-10-20 9:08:22 回复该留言
  • 刚发了一句牢骚(发表完第二条评论),页面就刷新了……
  • 评论作者:Fdream——2006-10-20 9:09:34 回复该留言
  • 这样试过了,可是音乐就再也播不出来了,到底怎么回事啊?急死了
  • 评论作者:腰倍好——2007-6-30 21:34:07 回复该留言
  • 博主您好:
      为了在设置图片防盗链时将搜索引擎及其快照排除在外,我在各大WP论坛发了N多求教贴,仍然不得要领。可否麻烦阁下指点一二:
      1.RewriteRule .*\.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O,N]中前两个参数是什么作用?
      2.第二种说法是这样排除搜索引擎:
    RewriteCond %{HTTP_USER_AGENT} !bot
    RewriteCond %{HTTP_REFERER} ....
    RewriteRule ....
    其中的省略部分如何修改?
      3.我的服务器是可以直接修改.htaccess文件的。如果如下的网上教程并参照您的方案,究竟该如何修改?
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.cn(/)?.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.cn(/)?.*$ [NC]
    RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
    RewriteCond %{HTTP_REFERER} !google.com [NC]
    RewriteCond %{HTTP_REFERER} !baidu.com [NC]
    RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
    RewriteRule .*\.(gif|jpg|jpeg|bmp|png|swf|mp3)$ http://www.mydomain.cn/warning.xjpg [R,NC]

    这里边的“R”和“NC”又是什么作用?

      
  • 评论作者:快乐岛博客——2010-3-7 14:54:35 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright 2009-3000 0e2.net. Some Rights Reserved.  Powered By Z-Blog.