練習 2:例外處理策略
學習使用例外處理區塊的包裝策略,處理含敏感資訊的例外。
開啟 Puzzler2.sln,預設路徑 C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Exception Handling\exercises\ex02,編譯。
PuzzlerService 中的 Dictionary.cs,為 AddWord 方法加上程式碼存取安全屬性:[PrincipalPermission(SecurityAction.Demand, Role = "Grand PoohBah")]
public static Boolean AddWord(string wordToAdd)
{
if (!IsWord(wordToAdd))
{
throw new ApplicationException("Word to add does not consist of alphabetic letters");
}
if (Dict[wordToAdd] == null)
Dict.Add(wordToAdd, wordToAdd);
return true;
}
注意:修改的是 Dictionary.cs 而非 DictionaryService.cs。現只有 Grand PoohBah 角色可執行此方法。
Word to check 輸入數字並點擊 Add Word。觸發服務端 SecurityException,事件檢視器可見
問題:SecurityException 從服務端傳至用戶端,包含敏感資訊助長攻擊。應在服務端記錄例外,僅傳送最少資訊至用戶端。後續練習將示範使用例外處理區塊解決此問題。