系統常見漏洞的修補
(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("<b>", "<b>"); sb.Replace("</b>", ""); sb.Replace("<i>", "<i>"); sb.Replace("</i>", ""); str = sb.ToString(); } if (string.IsNullOrEmpty(str)) { return ""; } return str; }
(2)、跨站點指令碼編制
解決方案:對引數進行編碼後,再進行解碼
System.Web.HttpUtility.UrlEncode(引數) //編碼
System.Web.HttpUtility.UrlDecode(Request["引數"]) //解碼
(3)、SQL注入問題
儘量少用字串拼接sql,使用引數