溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C#怎么對字符串剪裁、過濾危險字符、替換sql中有問題符號

發(fā)布時間:2021-07-07 14:11:21 來源:億速云 閱讀:334 作者:chen 欄目:編程語言

這篇文章主要講解了“C#怎么對字符串剪裁、過濾危險字符、替換sql中有問題符號”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C#怎么對字符串剪裁、過濾危險字符、替換sql中有問題符號”吧!

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
    using System.Text.RegularExpressions;  
      
    namespace BIReportCenter.Utility  
    {  
        public class StringHelper  
        {  
            #region String length formatter  
      
            /// <summary>  
            /// 對字符串進(jìn)行裁剪  
            /// </summary>  
            public static string Trim(string stringTrim, int maxLength)  
            {  
                return Trim(stringTrim, maxLength, "...");  
            }  
      
            /// <summary>  
            /// 對字符串進(jìn)行裁剪(區(qū)分單字節(jié)及雙字節(jié)字符)  
            /// </summary>  
            /// <param name="rawString">需要裁剪的字符串</param>  
            /// <param name="maxLength">裁剪的長度,按雙字節(jié)計數(shù)</param>  
            /// <param name="appendString">如果進(jìn)行了裁剪需要附加的字符</param>  
            public static string Trim(string rawString, int maxLength, string appendString)  
            {  
                if (string.IsNullOrEmpty(rawString) || rawString.Length <= maxLength)  
                {  
                    return rawString;  
                }  
                else  
                {  
                    int rawStringLength = Encoding.UTF8.GetBytes(rawString).Length;  
                    if (rawStringLength <= maxLength * 2)  
                        return rawString;  
                }  
      
                int appendStringLength = Encoding.UTF8.GetBytes(appendString).Length;  
                StringBuilder checkedStringBuilder = new StringBuilder();  
                int appendedLenth = 0;  
                for (int i = 0; i < rawString.Length; i++)  
                {  
                    char _char = rawString[i];  
                    checkedStringBuilder.Append(_char);  
      
                    appendedLenth += Encoding.Default.GetBytes(new char[] { _char }).Length;  
      
                    if (appendedLenth >= maxLength * 2 - appendStringLength)  
                        break;  
                }  
      
                return checkedStringBuilder.ToString() + appendString;  
            }  
     
     
            #endregion  
     
            #region 特殊字符  
      
            /// <summary>  
            /// 檢測是否有Sql危險字符  
            /// </summary>  
            /// <param name="str">要判斷字符串</param>  
            /// <returns>判斷結(jié)果</returns>  
            public static bool IsSafeSqlString(string str)  
            {  
                return !Regex.IsMatch(str, @"[-|;|,|\/|||
    |
    |\}|\{|%|@|\*|!|\']");  
            }  
      
            /// <summary>  
            /// 刪除SQL注入特殊字符  
            /// 解然 20070622加入對輸入?yún)?shù)sql為Null的判斷  
            /// </summary>  
            public static string StripSQLInjection(string sql)  
            {  
                if (!string.IsNullOrEmpty(sql))  
                {  
                    //過濾 ' --  
                    string pattern1 = @"(\%27)|(\')|(\-\-)";  
      
                    //防止執(zhí)行 ' or  
                    string pattern2 = @"((\%27)|(\'))\s*((\%6F)|o|(\%4F))((\%72)|r|(\%52))";  
      
                    //防止執(zhí)行sql server 內(nèi)部存儲過程或擴(kuò)展存儲過程  
                    string pattern3 = @"\s+exec(\s|\+)+(s|x)p\w+";  
      
                    sql = Regex.Replace(sql, pattern1, string.Empty, RegexOptions.IgnoreCase);  
                    sql = Regex.Replace(sql, pattern2, string.Empty, RegexOptions.IgnoreCase);  
                    sql = Regex.Replace(sql, pattern3, string.Empty, RegexOptions.IgnoreCase);  
                }  
                return sql;  
            }  
      
            public static string SQLSafe(string Parameter)  
            {  
                Parameter = Parameter.ToLower();  
                Parameter = Parameter.Replace("'", "");  
                Parameter = Parameter.Replace(">", ">");  
                Parameter = Parameter.Replace("<", "<");  
                Parameter = Parameter.Replace("\n", "<br>");  
                Parameter = Parameter.Replace("\0", "·");  
                return Parameter;  
            }  
      
            /// <summary>  
            /// 清除xml中的不合法字符  
            /// </summary>  
            /// <remarks>  
            /// 無效字符:  
            /// 0x00 - 0x08  
            /// 0x0b - 0x0c  
            /// 0x0e - 0x1f  
            /// </remarks>  
            public static string CleanInvalidCharsForXML(string input)  
            {  
                if (string.IsNullOrEmpty(input))  
                    return input;  
                else  
                {  
                    StringBuilder checkedStringBuilder = new StringBuilder();  
                    Char[] chars = input.ToCharArray();  
                    for (int i = 0; i < chars.Length; i++)  
                    {  
                        int charValue = Convert.ToInt32(chars[i]);  
      
                        if ((charValue >= 0x00 && charValue <= 0x08) || (charValue >= 0x0b && charValue <= 0x0c) || (charValue >= 0x0e && charValue <= 0x1f))  
                            continue;  
                        else  
                            checkedStringBuilder.Append(chars[i]);  
                    }  
      
                    return checkedStringBuilder.ToString();  
      
                    //string result = checkedStringBuilder.ToString();  
                    //result = result.Replace("?", "");  
                    //return Regex.Replace(result, @"[\u0000-\u0008\u000B\u000C\u000E-\u001A\uD800-\uDFFF]", delegate(Match m) { int code = (int)m.Value.ToCharArray()[0]; return (code > 9 ? "&#" + code.ToString() : "?" + code.ToString()) + ";"; });  
                }  
            }  
      
      
            /// <summary>  
            /// 改正sql語句中的轉(zhuǎn)義字符  
            /// </summary>  
            public static string mashSQL(string str)  
            {  
                return (str == null) ? "" : str.Replace("\'", "'");  
            }  
      
            /// <summary>  
            /// 替換sql語句中的有問題符號  
            /// </summary>  
            public static string ChkSQL(string str)  
            {  
                return (str == null) ? "" : str.Replace("'", "''");  
            }   
      
            /// <summary>  
            ///  判斷是否有非法字符  
            /// </summary>  
            /// <param name="strString"></param>  
            /// <returns>返回TRUE表示有非法字符,返回FALSE表示沒有非法字符。</returns>  
            public static bool CheckBadStr(string strString)  
            {  
                bool outValue = false;  
                if (strString != null && strString.Length > 0)  
                {  
                    string[] bidStrlist = new string[9];  
                    bidStrlist[0] = "'";  
                    bidStrlist[1] = ";";  
                    bidStrlist[2] = ":";  
                    bidStrlist[3] = "%";  
                    bidStrlist[4] = "@";  
                    bidStrlist[5] = "&";  
                    bidStrlist[6] = "#";  
                    bidStrlist[7] = "\"";  
                    bidStrlist[8] = "net user";  
                    bidStrlist[9] = "exec";  
                    bidStrlist[10] = "net localgroup";  
                    bidStrlist[11] = "select";  
                    bidStrlist[12] = "asc";  
                    bidStrlist[13] = "char";  
                    bidStrlist[14] = "mid";  
                    bidStrlist[15] = "insert";  
                    bidStrlist[19] = "order";  
                    bidStrlist[20] = "exec";  
                    bidStrlist[21] = "delete";  
                    bidStrlist[22] = "drop";  
                    bidStrlist[23] = "truncate";  
                    bidStrlist[24] = "xp_cmdshell";  
                    bidStrlist[25] = "<";  
                    bidStrlist[26] = ">";  
                    string tempStr = strString.ToLower();  
                    for (int i = 0; i < bidStrlist.Length; i++)  
                    {  
                        if (tempStr.IndexOf(bidStrlist[i]) != -1)  
                        //if (tempStr == bidStrlist[i])  
                        {  
                            outValue = true;  
                            break;  
                        }  
                    }  
                }  
                return outValue;  
            }  
     
            #endregion  
     
            #region Tools  
            /// <summary>  
            /// 去掉最后一個逗號  
            /// </summary>  
            /// <param name="String">要做處理的字符串</param>  
            /// <returns>去掉最后一個逗號的字符串</returns>  
            public static string DelLastComma(string String)  
            {  
                if (String.IndexOf(",") == -1)  
                {  
                    return String;  
                }  
                return String.Substring(0, String.LastIndexOf(","));  
            }  
      
            /// <summary>  
            /// 刪除最后一個字符  
            /// </summary>  
            /// <param name="str"></param>  
            /// <returns></returns>  
            public static string ClearLastChar(string str)  
            {  
                return (str == "") ? "" : str.Substring(0, str.Length - 1);  
            }  
            /// <summary>  
            /// html編碼  
            /// </summary>  
            /// <param name="chr"></param>  
            /// <returns></returns>  
            public static string html_text(string chr)  
            {  
                if (chr == null)  
                    return "";  
                chr = chr.Replace("'", "''");  
                chr = chr.Replace("<", "<");  
                chr = chr.Replace(">", ">");  
                return (chr);  
            }  
            /// <summary>  
            /// html解碼  
            /// </summary>  
            /// <param name="chr"></param>  
            /// <returns></returns>  
            public static string text_html(string chr)  
            {  
                if (chr == null)  
                    return "";  
                chr = chr.Replace("<", "<");  
                chr = chr.Replace(">", ">");  
                return (chr);  
            }  
            public static bool JustifyStr(string strValue)  
            {  
                bool flag = false;  
                char[] str = "^<>'=&*, ".ToCharArray(0, 8);  
                for (int i = 0; i < 8; i++)  
                {  
                    if (strValue.IndexOf(str[i]) != -1)  
                    {  
                        flag = true;  
                        break;  
                    }  
                }  
                return flag;  
            }  
            public static string CheckOutputString(string key)  
            {  
                string OutputString = string.Empty;  
                OutputString = key.Replace("<br>", "\n").Replace("<", "<").Replace(">", ">").Replace(" ", " ");  
                return OutputString;  
      
            }  
            #endregion  
        }  
    }

感謝各位的閱讀,以上就是“C#怎么對字符串剪裁、過濾危險字符、替換sql中有問題符號”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對C#怎么對字符串剪裁、過濾危險字符、替換sql中有問題符號這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI