如何保护只允许来自特定主机的WebAPI



我已经公开了MVC WebAPI,只想接受127.0.0.1的请求。原因是要使用此WebAPI函数的应用程序将托管在IIS服务器作为病毒应用程序。

能否有人建议如何实现上述目标,以及是否有很多优雅的解决方案。

覆盖DelegatingHandler并编写一个自定义处理程序,该处理程序将检查请求主机,如果符合您的条件,则继续或拒绝请求。

public class CustomHandler : DelegatingHandler
{     
   protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   {
    //check here for host of request
    if(!criteria)
    {
       request.Properties.Add("Forbidden", true);
    }
    return base.SendAsync(request, cancellationToken);
   }
}

WebApiConfig中将此处理程序注册为

public static void Register(HttpConfiguration config)
{
    config.MessageHandlers.Add(new CustomHandler());
}

您需要通过自定义软件来完成这些操作吗?


您可以将iis设置为仅绑定到内部地址(甚至可以更改端口),并确保服务器的防火墙不会暴露该绑定。

你能澄清一下想要这个的原因吗?如果只绑定localhost而不公开WebApi,则可以直接从代码中调用api方法。

最新更新