【问题标题】:Force ASP .Net Web API to block HTTP requests with Error (403)强制 ASP .Net Web API 以错误 (403) 阻止 HTTP 请求
【发布时间】:2017-03-16 23:54:27
【问题描述】:

我想将我的项目配置为不允许具有以下限制的 http 请求:

  1. 它必须是所有 API 的全局限制(通过 web.config、安装程序中的脚本等)
  2. 必须是硬编码的(不能在 IIS 的 APP 上按“Require SSL”)
  3. 没有“重定向”- 只返回错误 (403)

我的理想选择是通过在安装程序中运行的脚本来配置“需要 SSL”。

【问题讨论】:

  • 你有没有尝试过?什么有效或无效?
  • 全局操作过滤器,检查传入请求的方案,如果不是 https,则返回 403。

标签: rest ssl asp.net-web-api iis-10


【解决方案1】:

这可以通过编写一个简单的ActionFilter 来完成,该ActionFilter 检查请求并在方案未设置为 ssl 时做出响应。一个非常小的实现可能类似于:

public class RequireHttpsAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
        {
            actionContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden);
        }
    }
}

要使此功能适用于任何地方,您可能希望在应用程序启动时将其注册为 WebAPI 配置中的全局过滤器。这看起来像:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Filters.Add(new RequireHttpsAttribute());

        // ... More configuration ...
    }
}

如果您稍微搜索一下网络,您可以找到许多类似过滤器的示例,这些过滤器具有更强大的逻辑,可以更好地满足您的需求。

【讨论】:

    猜你喜欢
    • 2021-09-20
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 2017-03-09
    相关资源
    最近更新 更多