IIS7.0下防盗链设置,aspnet防盗链源码

IIS7.0下防盗链设置, .
分类: Asp.net 2011-07-11 16:27 4人阅读 评论(0) 收藏 编辑 删除
常见的asp.net防盗链的方法是写一个HttpHandler类,实现IHttpHandler接口,代码如下:

public class ImageHandler : IHttpHandler {
   
    public void ProcessRequest (HttpContext context) {
        //判断是否是本地网站引用图片,如果是则返回正确的图片
        if (context.Request.UrlReferrer!=null && context.Request.UrlReferrer.Host.Equals("localhost"))
        {
            //设置客户端缓冲时间过期时间为0,即立即过期
            context.Response.Expires =0;
            //清空服务器端为此会话开启的输出缓存
            context.Response.Clear();
            //设置输出文件类型
            context.Response.ContentType = "image/jpg";
            //将请求文件写入到输出缓存中
            context.Response.WriteFile(context.Request.PhysicalPath);
            //将输出缓存中的信息传送到客户端
            context.Response.End();
        }
        //如果不是本地引用,则是盗链本站图片
        else
        {
            //设置客户端缓冲时间过期时间为0,即立即过期
            context.Response.Expires = 0;
            //清空服务器端为此会话开启的输出缓存
            context.Response.Clear();
            //设置输出文件类型
            context.Response.ContentType = "image/jpg";
            //将请求文件写入到输出缓存中
            context.Response.WriteFile(context.Request.PhysicalApplicationPath + "imgs/fdl.jpg");
            //将输出缓存中的信息传送到客户端
            context.Response.End();
        }

    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

完事后再在web.config中加入如下配置,

<httpHandlers>
      <add verb="*" type="ImageHandler" path="*.jpg,*.jpeg"  validate="false"/>
</httpHandlers>

在本地运行可以通过,但貌似在iis7.0下防盗链通不过,当然在本地运行也是一个问题(环境:asp.net4.0),iis7.0下访盗链可以通过如下方法实现:

前提:需要安装:ISAPI_Rewrite3

下载地址:http://www.helicontech.com/download.htm

<system.webServer>
            <rewrite>
               <rules>
                 <rule name="Forbid image">
                   <match url="\.(txt|doc|gif|jpg|jpeg|png|mp3|flv|swf)$" ignoreCase="false" />
                      <conditions>
                       <add input="{HTTP_REFERER}" pattern="^$" ignoreCase="false" negate="true" />
                       <add input="{HTTP_REFERER}" pattern="^http://(www\.)?passji.com/.*$" negate="true" />
                      </conditions>

<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
                                     </rule>
               </rules>
          </rewrite>
     </system.webServer>


如果你想让盗链你的图片的网站上显示你准备的"禁止盗链“之类的图片,请将

<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
修改成:

<action type="Rewrite" url="/imgs/fbl.png" />

imgs/fbl.png根据你实际的图片位置和名称做修改。通过测试,iis7.0下防盗链可以通过。

还有一种方法:就是写一个.htaccess为后缀的配置文件!然后在iis上导入配置规则!

RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !soso.com [NC]
RewriteCond %{HTTP_REFERER} !bing.com [NC]
RewriteRule .*\.(gif|jpg|jpeg|bmp|png)$ http://www.wovane.com/fbl.png [R,NC,L]

参考:http://wenku.baidu.com/view/6121f509581b6bd97f19eace.html


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值