验证BundleConfig路由/ URL的请求

时间:2016-10-31 10:24:55

标签: c# asp.net security bundling-and-minification

ASP.NET中是否有办法验证使用BundleConfig ScriptBundle创建的虚拟路径/路由中发送的请求参数?

示例:

我有一个BundleConfig配置如下:

bundles.Add(new ScriptBundle("~/bundles/bjqs").Include(
                "~/Scripts/bjqs-1.3.js"));

如果用户发送如下请求:

http://example.com/bundles/bjqs?v=parameter-value_to%be+validated

在ASP.NET处理/处理请求之前,如何验证查询字符串v参数中传递的值对正则表达式?

1 个答案:

答案 0 :(得分:1)

您可以使用自定义HttpModule拦截请求。例如:

public class MyModule1 : IHttpModule
{
    public void Dispose() {}

    public void Init(HttpApplication context)
    {
        context.AuthorizeRequest += context_AuthorizeRequest;
    }

    void context_AuthorizeRequest(object sender, EventArgs e)
    {
        var app = (HttpApplication)sender;

        // Check if the parameter is valid, your logic
        if (ValidateRequest(app.Context.Request))
        {
            // Then do nothing
            return;
        }

        // Otherwise, return unauthorized response
        app.Context.Response.StatusCode = 401;
        app.Context.Response.End();
    }
}