如何阻止未授权域名欺骗?站点遭无关域名恶意指向
阻止恶意域名盗链/反向代理你的站点的解决方案
一、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块中添加:
这样非Cloudflare的请求会直接被Nginx拒绝。ssl_client_certificate /etc/nginx/cf-origin/cloudflare.crt; ssl_verify_client on; - 重启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
相关产品推荐
相关产品推荐

