1. 程式人生 > >系統常見漏洞的修補

系統常見漏洞的修補

(1)、網站留言板或者一些註冊頁面,未對用的輸入做轉義及過濾,攻擊者可提交精心構造的惡意指令碼,可破壞後臺網頁結構,xss惡意彈窗

解決方案:對連結,引數進行過濾

   /// <summary>     /// 過濾特殊字串,過濾html     /// </summary>     /// <param name="str"></param>     /// <returns></returns>     public string StringIllegalFormat(string str)     {         if (!string.IsNullOrEmpty(str))         {             str = str.Trim();             str = str.Replace("/", "?");             Regex reg1 = new Regex(@"<[\s]*?script[\s\S]+<[\s]*?/script[\s]*?>", RegexOptions.IgnoreCase);             str = reg1.Replace(str, "");             Regex reg2 = new Regex(@"javascript[\s]*?:[\S]*?\(\w*?\)[\;]*?", RegexOptions.IgnoreCase);             str = reg2.Replace(str, "");             Regex reg3 = new Regex(@"on[\S]*?[\s]*?=", RegexOptions.IgnoreCase);             str = reg3.Replace(str, "");             str = str.Replace("alert", "alert");

            // 將輸入字串編碼,這樣所有的HTML標籤都失效了。過濾Html標籤             StringBuilder sb = new StringBuilder(                                     HttpUtility.HtmlEncode(str));             // 然後我們選擇性的允許<b> 和 <i>             sb.Replace("&lt;b&gt;", "<b>");             sb.Replace("&lt;/b&gt;", "");             sb.Replace("&lt;i&gt;", "<i>");             sb.Replace("&lt;/i&gt;", "");             str = sb.ToString();         }         if (string.IsNullOrEmpty(str))         {             return "";         }         return str;     }

(2)、跨站點指令碼編制

解決方案:對引數進行編碼後,再進行解碼

System.Web.HttpUtility.UrlEncode(引數) //編碼

System.Web.HttpUtility.UrlDecode(Request["引數"]) //解碼

(3)、SQL注入問題

   儘量少用字串拼接sql,使用引數