每当请求该类的任何方法时,自动调用公共方法

时间:2013-03-13 14:50:53

标签: c# asp.net

我正在维护一个ASP.net + c#[.net版本3.5]应用程序。要求是,在整个应用程序中,必须检查传递给DAL层的任何字符串变量是否有一些指定的单词和符号。

在这种情况下,我必须继续每个方法,然后每个字符串参数检查特定的单词和符号,这将花费很多时间。所以我在想一种我不知道或不喜欢的方法

每当从BLL层调用任何DAL层类方法的请求时,必须使用传递给实际DAL方法的所有参数自动调用在DAL层下定义的公共方法 (这个常见的方法我应该抵制DAL的构造函数)。 在常用方法中,我应该检查所有字符串参数并在需要时更改它们的值,然后在从此方法返回后,实际方法将调用更改的值。

如果不可能做到这一点,请建议我采取其他方法。

2 个答案:

答案 0 :(得分:2)

您可以使用其中一个AOP Fameworks在DAL方法中注入代码。 Postsharp将是更好的之一。

答案 1 :(得分:2)

您要实现此类功能的唯一方法是使用一些面向方面的编程库,如下所述:What is the best implementation for AOP in .Net?

听起来你需要确认用户没有尝试创建SQL注入。首先,任何设计良好的应用程序都不会创建SQL注入的可能性,因此不需要这样的验证。如果某些其他要求需要(记录此类尝试),则应在HTTP请求级别执行此操作。您可以创建IHttpModule(或者只编写global.asax中的代码,该代码将审核Request对象中的所有值,并查看是否包含坏词等。

protected void Application_PostAuthorizeRequest(object sender, EventArgs e)
{
    var collection = this.Context.Request.Params;
    foreach (var key in collection.Keys)
    {
        if (ContainsBadWords(collection[key]))
            Log("Request key " + key + " contains bad words: " + collection[key]);
    }
}
相关问题