ASP.NET全局文件与防盗链

添加Web→全局应用程序类,注 文件名不要改 Global.asax
全局文件是对Web应用声明周期的一个事件响应的地方,将Web应用启动时初始化的一些代码写到
Application_Start中,比如后面讲的Log4Net的初始化等。应用关闭的时候Application_End调用
当一个Session启动的时候Session_Start被调用,Session结 (用户主动退出或者超时结 )
Session_End被调用。当一个用户请求来的时候Application_BeginRequest方法被调用当应用中出
现未捕获异常,Application_Error被调用(常考,ASP.Net中的错误处理机制),
用HttpContext.Current.Server.GetLastError()获得异常信息,然后用 Log4Net记录到日志中。

1.通过全局配制实现图片的防盗链

//jztu.jpg 禁止盗链的图片
protected void Application_BeginRequest(object sender,EventArgs e)
{
    if (HttpContext.Current.Request.Url.AbsolutePath.EndsWith(".jpg")&&
        HttpContext.Current.Request.UrlReferrer.Host != "www.gao.com")
    {
        HttpContext.Current.Response.WriteFile(HttpContext.Current.
        Server.MapPath("~/jztu.jpg"));
        HttpContex.Current.Response.End();
    }else{
        // 验证通过输出用户请求的文件
        HttpContext.Current.Response.TransmitFile(HttpContext.Current.Request.PhysicalPath);
    }
}

屏蔽指定的IP地址

protected void Application_BeginRequest(object sender,EventArgs e)
{
    if (HttpContext.Current.Request.UserHostAddress == "127.0.0.1")
    {
        HttpContext.Current.Response.Write("该IP以被屏蔽!");
        HttpContext.Current.Response.End();
    }else{
        // 验证通过输出用户请求的文件
        HttpContext.Current.Response.TransmitFile(HttpContext.Current.Request.PhysicalPath);
    }
}

IIS发布注意事项:发布到IIS上需要设置一下IIS的 处理程序映射->添加脚本映射->请求路径(*.jpg)->可执行文件(ASP.NET的处理程序),一次只能添加一个扩展名

还有一种更简便的方法就是在Web.config 里面设置 在 <system.webServer> 节点里面添加如下:

<!-- 设置IIS对指定扩展的处理程序为ASP.NET -->
<handlers>
    <add name="防盗链 png" path="*.png" verb="*" modules="IsapiModule" scriptProcessor="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
</handlers>

通过自定义 HttpHandler 实现盗链

1. 自定义的 HttpHandler

public class Protect : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
           if (HttpContext.Current.Request.Url.AbsolutePath.EndsWith(".jpg")&&
        HttpContext.Current.Request.UrlReferrer.Host != "www.gao.com")
       {
        HttpContext.Current.Response.WriteFile(HttpContext.Current.
        Server.MapPath("~/jztu.jpg"));
        HttpContex.Current.Response.End();
        }else{
            // 验证通过输出用户请求的文件
            HttpContext.Current.Response.TransmitFile(HttpContext.Current.Request.PhysicalPath);
        }
        }

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

2. 在Web.config还要在 <system.web> 下配置模块

      <!-- 指定某些扩展名的程序给指定的程序解析,可指定多个 -->
      <httpHandlers>
        <add verb="*" path="*.png,*.jpg,*.gif,*.png,*.mp3,*.wma,*.lrc" type="FlyMusic.Web.Com.Protect,FlyMusic.Web"/>
      </httpHandlers>

3. 发布到IIS时和上面一样

时间: 2024-08-06 01:53:32

ASP.NET全局文件与防盗链的相关文章

asp.net MVC 网站图片防盗链的几种方法

目录 1. 通过 URL Rewrite Module 组件 2. 通过 nginx 图片防盗链 3.自定义 HttpHandler 处理 4. 通过 MVC 自定义路由规则防盗链 5. 通过 MVC 自定义 RouteHandler 防盗链 6. 通过 HttpModModule 防盗链 7. 涉及知识点,相关资源 自己网站上的图片被别的网站盗用是一件很令人厌恶的事情,下面是处理图片盗链的几种方法. 在这里先交代一下环境,我用的是 MVC4 ,IIS7 应用程序池为集成模式,以下配置都是基于此

Apache 隐藏入口文件以及防盗链.htaccess 文件

RewriteEngine on # 隐藏入口文件 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [L] # 防止资源盗链 RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !football.com [NC] RewriteCond %{HTTP_REFE

LNMP搭建11:Nginx配置防盗链

我们网站上的资源如果没有设置防盗链,那么其他人可以通过资源链接盗用我们的资源,占用我们的带宽,影响我们网站对合法用户的服务质量.举个例子,假如我们网站上有一张图片,如下图所示: 复制图片地址,可以直接在浏览器中搜到我们的图片,也可以在其他地方通过该图片地址引用或下载该图片. 为了不让别人盗用我们的资源,我们可以在服务器上设置防盗链. 编辑虚拟主机配置文件 [[email protected] vhosts]# vim test.conf 添加指定类型文件的防盗链 没错误重新加载配置文件 [[em

nginx防盗链

一.防盗链的一般方法是在server或者location段中加入如下格式代码: 1 valid_referers none blocked server_names 其中 none表示空的来路,也就是直接访问,比如直接在浏览器打开一个图片.blocked表示被防火墙标记过的来路,server_names是域名,可以用*.demo.com来表示所有的二级域名 1 2 3 4 5 6 7 location ~ \.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|sw

nginx的配置和优化(隐藏版本号、gzip、expires、防盗链......等)

Nginx配置和优化 1.隐藏版本号 默认情况下,使用curl命令会把nginx的版本信息等获取到,如: [[email protected]_machine ~]# curl -I -H"www.beyond.com" "http://172.16.254.5/index.php"  HTTP/1.1 200 OK Server:nginx/1.6.3 Date: Wed, 24 Jun 2015 02:50:59 GMT Content-Type: text/h

Nginx图片防盗链的方式

location ~* \.(gif|jpg|jpeg|png|ico)$ { valid_referers none blocked www.oschina.net oschina.net; if ($invalid_referer) {     rewrite ^/ /daolian.jpg; } access_log off; root /opt/web; expires 5d; break; 第一行:gif|jpg|jpeg|png|ico 表示对gif,jpg,jpeg,png,ico

Nginx缓存功能、防盗链、URL重写

nginx做为反向代理时,能够将来自upstream的响应缓存至本地,并在后续的客户端请求同样内容时直接从本地构造响应报文. nginx的缓存数据结构: 共享内存:存储键和缓存对象元数据 磁盘空间:存储数据 用法: Syntax: proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number

Nginx的防盗链配置

1 [[email protected] www]# cat /app/server/nginx/conf/vhosts/default.conf 2 server { 3 listen 80 default_server; 4 server_name 192.168.1.24 web01.espressos.cn; 5 root /app/www; 6 index index.php index.html index.htm; 7 location ~* \.(gif|jpg|png|swf|

2018-3-6 10周5次课 配置防盗链、访问控制Directory、FilesMatch

11.25 配置防盗链 ·通过限制referer来实现防盗链的功能 带宽会异常升高,有可能是被倒链 配置如下内容: Order Allow,Deny ##顺序,先把白名单允许,把其他deny掉 Allow from env=local_ref (注意:"Allow,Deny"中间只有一个逗号,也只能有一个逗号,有空格都会出错:单词的大小写不限.上面设定的含义是先设定"先检查允许设定,没有允许的全部禁止",而第二句允许变量 local_ref 的 referer. &