繁体   English   中英

将 static 文件提供给特定的 IP 地址

[英]Serve static files to specific IP addresses

我有一个项目,我目前正在从 .NET Core Web ZDB974238714CA38DE634A7ACED 文件夹中提供 static 文件。 它在 startup.cs 中使用 app.UseStaticFiles() 命令,它非常适合为我们的 SPA 前端提供服务。 但是,我们有一个要求,我们需要一个 controller 调用对 Internet 开放,而 rest 被 IP 地址锁定。 我似乎无法弄清楚的一件事是如何防止 Web API 将 static 文件提供给 Internet,因为这些文件应该仅供内部使用 wwwroot 文件夹。

我知道已经内置了中间件来通过 IP 地址锁定控制器,并且有很多方法可以自己制作,但我需要特别防止 wwwroot 文件夹中的前端 SPA 被互联网看到,而只有一个很少有 controller 调用可以访问互联网。

有没有办法做到这一点?

我能够使用 Michal Rosenbaum 提到的 Nuget package 来实现我所需要的。 通过在路由和端点之后但在 static 文件中间件之前添加防火墙,防火墙将仅在提供 wwwroot 文件时应用。 作为额外的奖励,我能够试验并弄清楚如何锁定特定的 IP 地址以防止访问控制器(尽管它不在此答案的 scope 范围内)。 现在,该应用程序将不再向未经授权的 IP 地址提供 SPA,但 API 仍然可以从外部访问,这正是我所需要的。

app.UseEndpoints(endpoints =>
        {
            endpoints
                .MapControllers();
        });

 var firewall =  FirewallRulesEngine
                .DenyAllAccess()
                .ExceptFromLocalhost()
                .ExceptFromIPAddresses(new[] { IPAddress.Parse("192.168.1.3"), IPAddress.Parse("192.168.1.8") });

  app.UseFirewall(firewall);    
  app.UseDefaultFiles();
  app.UseStaticFiles();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM