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"页面上.

你可能感兴趣的:(C#)