MiddleWare中间键实现 简单的防盗链 AOP

看了Elevent老师的视频,把方法记一下

  public class RefuseStealingMiddleWare
    {
        private readonly RequestDelegate next;

        public RefuseStealingMiddleWare(RequestDelegate next)
        {
            this.next = next;
        }
        public async Task Invoke(HttpContext context)
        {
            string url = context.Request.Path.Value;
            if (!url.Contains(".png"))
            {
                await next(context);//正常流程
                return;
            }
            string urlReferrer = context.Request.Headers["Referer"];
            if (string.IsNullOrWhiteSpace(urlReferrer))//直接访问的图片
            {
                await this.SetForbiddenImage(context);
            }
            else if (!urlReferrer.Contains("localhost"))//这里是举例子用的localhost
            {
                await this.SetForbiddenImage(context);
            }
            else
            {
                await next(context);//正常流程
            }
        }
        /// <summary>
        /// 设置拒绝图片
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private async Task SetForbiddenImage(HttpContext context)
        {
            string defaultImagePath = "wwwroot/image/menuDish.png";
            string path = Path.Combine(Directory.GetCurrentDirectory(), defaultImagePath);
            FileStream fs = File.OpenRead(path);
            byte[] bytes = new byte[fs.Length];
            await fs.ReadAsync(bytes, 0, bytes.Length);
            await context.Response.Body.WriteAsync(bytes, 0, bytes.Length);
        }
    }

在startup的configure方法加上

  public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {

            //防止盗链
            app.UseMiddleware<RefuseStealingMiddleWare>();

原文地址:https://www.cnblogs.com/hurui1/p/12609712.html

时间: 2024-07-31 07:11:19

MiddleWare中间键实现 简单的防盗链 AOP的相关文章

用Nginx给网站做一个简单的防盗链

目录结构 Nginx防盗链配置 有些时候,大家不想让别人调用自己的图片,一是因为个人版权的问题,再一点就是会增加服务器的负载.还会产生一些没必要的流量. 其实在Nginx里面,很容易就做到防盗链的,在nginx.conf文件加入一个localtion配置项. 下面请看配置: location ~ .*\.(jpg|jpeg|JPG|png|gif|icon)$ { valid_referers blocked www.qixing318.com qixing318.com; if ($inval

简单的防盗链技术(过滤器原理)

public class ImgFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { System.out.println("过滤器初始化..."); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws

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

网站资源被盗链的:预防方法 VS 网站资源防盗链的:破解技巧

资源被盗链:(简明定义) 下载者不是从你的网站直接下载资源,而是通过其他盗链网站提供的你的下载资源链接进行下载你的服务器资源! http://baike.baidu.com/view/272422.htm 一>预防方法: 方法1:判断引用地址这个方法是最早及最常见的方法.所谓判断引用地址,就是判断浏览器请求时HTTP头的Referer字段的 值,这个值在asp.net里面可以用 Request.UrlReferrer属性取得.几个例子来说,在正常情况下当用户在浏览 http://uushare.

3_Jsp标签_简单标签_防盗链和转义标签的实现

一概念 1防盗链 在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件,通过referer,网站可以检测目标网页访问的来源网页.有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面. 2页面中的转义字符 在HTML中,定义转义字符串的原因有两个:第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当作文本中的符号来使用.为了在HTML文档中使用这些符号,就

ASP.NET 实现简单的图片防盗链介绍

在此,网站图片防盗链的方法是,通过获取Http请求头中的 Referer 标头与本网站域名比较,来判断用户是否来自本站跳转过来的 . 创建一个全局处理程序,用来处理images目录下的图片的直接请求: using System; using System.Web; /// <summary> ///DaoLian 的摘要说明 /// </summary> public class DaoLian:IHttpHandler { public bool IsReusable { get

实现简单图片下载功能及防盗链

1.防盗链的基本原理就是就是一句话:通过判断request请求头的refer是否来源于本站. 2.HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理. @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletExc

apache web服务器与防盗链的设置

一.安装apache2.4.23 新版本的httpd-2.4新增以下特性: 新增模块: mod_proxy_fcgi(可提供fcgi代理) mod_ratelimit(限制用户带宽) mod_request(请求模块,对请求做过滤) mod_remoteip(匹配客户端的IP地址) 对于基于IP的访问控制做了修改,不再支持allow,deny,order机制,而是统一使用require进行 还新增以下几条新特性: 1.MPM支持在运行时装载;不过要开启这种特性,在编译安装要启用这三种功能: --

Nginx实现图片防盗链(referer指令)

什么是图片盗链   每张图片在浏览器中都有对应的图片地址,在浏览器中输入这个地址是可以直接拿到图片. 图片盗链,就是盗用者在他的站上需要显示我们的图片,他没有把图片拿下来,放到他的服务器上, 而是直接就用我们的,图片地址,来请求到我们的服务器来拿图片,流量产生在我们这边. referer referer指令通过检测访问图片的来源,来做出一些控制. 图片访问的来源 通过谷歌/百度访问 通过浏览器直接访问 本站点的访问 来自非法的域名访问 referer nginx 模块 ngx_http_refe