Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        public override bool HandleRequest(ParamInfo paramInfo)
        {
            ShowDebugMsg(paramInfo);

            if (paramInfo.Value == null)
            {
                return(true);
            }

            string translatedValue = paramInfo.Value;

            //將 &#x6a 翻譯為 j  &#106 翻譯為 j (加上分號[;])
            string pattern     = @"(?is)(?<prefix>&#)(?<cnt>[^\s&#\\;]+);?";
            string replacement = @"&#${cnt};";

            if (Regex.IsMatch(translatedValue, pattern))
            {
                translatedValue = Regex.Replace(translatedValue, pattern, replacement);
            }

            //將 \x6a 翻譯為 &#x6a;  \75 翻譯為 &#x75;
            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));
        }