C#防盗链

譬如:

像这样一个地址,有时通过直接点击就可以下下来,但实际上,通过控制,判断用户的权限,还是可以防止资源被直接下载的.

http://localhost/gv/upload/DesignPattern.rar

原理:

客户端对页面的请求,先会通过ISAPI(Internet Server Application Programe Interface),ISAPI会对不同类型的文件,进行分类处理.但是aspnet_isapi.dll 不可能对每种文件采用同一种方式处理,通过 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\ 中的web.config中的HttpHandlers节点,我们可以看出,有一些后缀的文件是通过特定的类处理的.

于是我们可以通过对某类特定文件,例如.rar后缀的文件,通过自己实现的一个类,实现对资源进行控制.

具体:

1.添加一个类,实现IHttpHandler接口.

public class DaoLian : IHttpHandler
{
	public DaoLian()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
	}

    #region IHttpHandler 成员

    public bool IsReusable
    {
        get { return true; }
    }

    public void ProcessRequest(HttpContext context)
    {
        if ( ** == false)
        {
            HttpResponse Response = context.Response;
            Response.Redirect("~/Default5.aspx");
        }
    }

    #endregion
}
 
**为自己判断用户权限后返回的Boolean值.
其中,在ProcessRequest中,可以通过判断用户的权限,设置是允许下载,还是执行其他的操作.
 
2.添加对.rar文件的控制.
在web.config中添加对.rar文件的控制.
<system.web>
<httphandlers>
...
      <add verb="*" path="*.rar" type="DaoLian"/>
</system.web>
</httphandlers>
 
在IIS中,添加对.rar文件的控制.
在"默认网站"下所需的网站->"属性"->"配置"。在弹出的"应用程序配置"窗口里按"添加",在弹出的"添加/编辑应用程序扩展名映射"
窗口里“可执行文件”选择C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,在扩展名里输入“.rar”,然后确定即可。
 
此时,通过.rar后缀的文件,就可以进行控制了.
例如,对http://localhost/gv/upload/DesignPattern.rar进行访问的话,会跳转至"default5.aspx"页面上.
原文地址:https://www.cnblogs.com/oneword/p/1513249.html