You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止未授权域名欺骗?站点遭无关域名恶意指向

阻止恶意域名盗链/反向代理你的站点的解决方案

一、Cloudflare 层面防护(最优先拦截)

利用Cloudflare的边缘能力提前拦截,减少源服务器压力:

  • 配置页面规则:在Cloudflare控制台「规则」→「页面规则」中,添加一条规则,URL匹配填*fraud.com/*,设置「自定义响应」,状态码选403,响应内容填“Unauthorized”,直接拦截所有指向该恶意域名的请求。
  • 开启Authenticated Origin Pulls:进入「SSL/TLS」→「源服务器」,开启该功能,同时下载Cloudflare的源证书。这一步能确保只有Cloudflare转发的请求才能到达你的源服务器,避免恶意域名直接解析到你的服务器IP绕过Cloudflare。
  • 防火墙规则拦截:在「防火墙」→「防火墙规则」里创建规则,规则表达式写(host eq "fraud.com"),动作选择「阻止」,精准拦截来自该域名的请求。

二、Nginx 层面防护(源服务器二次拦截)

即使恶意请求绕过Cloudflare,也能在Nginx这里拦住:

  • 修改站点的Nginx配置文件(通常路径是/etc/nginx/sites-available/sample.test),在server块中添加主机名校验逻辑:
    server {
        listen 80;
        listen 443 ssl;
        server_name sample.test; # 仅允许合法域名访问
    
        # 校验请求Host,非法域名直接返回403
        if ($host != "sample.test") {
            return 403;
        }
    
        # 原有反向代理配置(示例,根据你的实际ASP.NET端口调整)
        location / {
            proxy_pass http://localhost:5000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
  • 配置Cloudflare源证书(配合Authenticated Origin Pulls):
    把下载的Cloudflare证书和密钥放到服务器目录(比如/etc/nginx/cf-origin/),然后在Nginx的server块中添加:
    ssl_client_certificate /etc/nginx/cf-origin/cloudflare.crt;
    ssl_verify_client on;
    
    这样非Cloudflare的请求会直接被Nginx拒绝。
  • 重启Nginx使配置生效:sudo systemctl restart nginx

三、ASP.NET 应用层面防护(最后一道防线)

在应用内部加入校验,防止漏网之鱼:

  • 在Program.cs(.NET 6+)中添加自定义中间件,校验请求的Host:
    app.Use(async (context, next) =>
    {
        var allowedHosts = new[] { "sample.test" };
        var requestHost = context.Request.Host.Host;
        if (!allowedHosts.Contains(requestHost))
        {
            context.Response.StatusCode = StatusCodes.Status403Forbidden;
            await context.Response.WriteAsync("Unauthorized");
            return;
        }
        await next();
    });
    
  • 同时确保appsettings.json中的AllowedHosts设置为合法域名:
    {
      "AllowedHosts": "sample.test"
    }
    

内容的提问来源于stack exchange,提问作者Ernest Rutherford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:33:34