public override bool HandleRequest(ParamInfo paramInfo) { ShowDebugMsg(paramInfo); if (paramInfo.Value == null) { return(true); } //先處理需清除的字串 StringBuilder sbValue = new StringBuilder(paramInfo.Value); foreach (string dirtyString in dirtyStringArray) { sbValue.Replace(dirtyString, ""); } //解碼 paramInfo.Value = HttpUtility.UrlDecode(sbValue.ToString()); //沒下一個時,預設搜尋黑名單關鍵字 if (successor == null) { successor = new BlacklistKeywordFilter(); } //換下一個參數過濾物件檢查 return(successor.HandleRequest(paramInfo)); }
public override bool HandleRequest(ParamInfo paramInfo) { ShowDebugMsg(paramInfo); if (paramInfo.Value == null) { return(true); } string translatedValue = paramInfo.Value; //將 j 翻譯為 j j 翻譯為 j (加上分號[;]) string pattern = @"(?is)(?<prefix>&#)(?<cnt>[^\s&#\\;]+);?"; string replacement = @"&#${cnt};"; if (Regex.IsMatch(translatedValue, pattern)) { translatedValue = Regex.Replace(translatedValue, pattern, replacement); } //將 \x6a 翻譯為 j \75 翻譯為 u pattern = @"(?is)(?<prefix>\\x?)(?<cnt>[^\s&#\\;]+)"; replacement = @"&#x${cnt};"; if (Regex.IsMatch(translatedValue, pattern)) { translatedValue = Regex.Replace(translatedValue, pattern, replacement); } //解碼 string decodeValue = HttpUtility.HtmlDecode(translatedValue); //處理需清除的字串 StringBuilder sbValue = new StringBuilder(decodeValue); foreach (string dirtyString in dirtyStringArray) { sbValue.Replace(dirtyString, ""); } paramInfo.Value = sbValue.ToString(); //沒下一個時,預設搜尋黑名單關鍵字 if (successor == null) { successor = new BlacklistKeywordFilter(); } //換下一個參數過濾物件檢查 return(successor.HandleRequest(paramInfo)); }