2013-03-13 15 views
1

我正在維護一個ASP.net + c#[.net版本3.5]應用程序。要求是,通過應用程序,無論傳遞給DAL層的字符串變量都必須檢查某些指定的詞和符號。每當請求爲該類別的任何方法自動調用常用方法

在這種情況下,我必須去每個方法,然後每個字符串參數來檢查特定的單詞和符號,這將花費大量的時間。所以我正在考慮一種我不知道可能或不喜歡的方法

每當從BLL層請求調用任何DAL層類的方法時,在DAL層下定義的常用方法必須自動調用所有參數傳遞給實際的DAL方法 (這種常見的方法我應該抵制DAL的構造函數)。 在通常的方法中,我應該檢查所有字符串參數並在需要時更改它們的值,然後從此方法返回後,實際方法將使用更改的值進行調用。

如果這是不可能的,請儘量採用其他方法,儘量減少費用。

+0

你有正在進行實際工作的代碼嗎?你嘗試過什麼或者你到目前爲止有什麼......?以及爲什麼你需要改變數值然後傳回改變後的數值......請舉例說明誰在什麼時候如何以及爲什麼......這將幫助他人理解你想要的東西完成 – MethodMan 2013-03-13 14:56:31

+0

我有應用程序的源代碼,應該實現我的方法,但我沒有得到我如何註冊我的常用方法,該方法會自動調用任何請求爲該類的任何方法所做的其他解決方法我想訪問每種方法,並檢查每個字符串pa rameter。 – 2013-03-13 15:00:22

回答

2

您可以使用其中一個AOP Fameworks在您的DAL方法中注入代碼。 Postsharp將是更好的。

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]); 
    } 
} 
+0

+1 global.asax實際上是一個很好的建議 – MethodMan 2013-03-13 15:04:13

+0

是否有任何源代碼或引用,這樣的事情使用global.asax – 2013-03-13 15:10:34

+0

添加了一個代碼示例 – 2013-03-13 15:29:19