public static string StringFilters(string input)
{
if (string.IsNullOrEmpty(input))
return input;
/*跨站攻擊過慮*/
input = input.Replace("", "&#");//過濾 攻擊方式javascript:alert('XSS')
input = Regex.Replace(input, @"javascript:", "Javascript:", RegexOptions.IgnoreCase);//過濾JS 攻擊方式:javascript:alert('XSS');
input = Regex.Replace(input, @"vbscript:", "Vbscript:", RegexOptions.IgnoreCase);//過濾JS 攻擊方式:vbscript:msgbox('XSS');
input = Regex.Replace(input, @"j *a *v *a *s *c *r *i *p *t:", "Vbscript:", RegexOptions.IgnoreCase);//攻擊方式:java script:alert('XSS');
input = Regex.Replace(input, @"\/\*[sS]*\*\/", "<!-- code -->", RegexOptions.IgnoreCase);
input = Regex.Replace(input, @"expression", "expression", RegexOptions.IgnoreCase);
input = Regex.Replace(input, @"<[\u0020]*style[^>]*>", "S:yle", RegexOptions.IgnoreCase);
input = Regex.Replace(input, @"<[^>]*object[^>]*>", "objec&$58", RegexOptions.IgnoreCase);//攻擊方式 <OBJECT TYPE="text/x-scriptlet" DATA="http://www.cnblog.cn"></OBJECT> 注意,這樣過濾后將無法使用FLASH
/*各種事件過濾*/
input = Regex.Replace(input, @"<[^>]*[\u0020]+on[A-Za-z]{3,20}[\u0020]*=[\u0020]*[^>]*>", "Js Event", RegexOptions.IgnoreCase);//
input = input.Replace("'", "'");//單引號防止SQL注入
input = Regex.Replace(input, @"script", "Script", RegexOptions.IgnoreCase);//防止腳本攻擊
input = Regex.Replace(input, @"frame", "frame", RegexOptions.IgnoreCase);//防止iframe 掛馬
input = Regex.Replace(input, @"form", "form", RegexOptions.IgnoreCase);//禁止表單提交
input = Regex.Replace(input, @"meta", "meta", RegexOptions.IgnoreCase);//防止用使meta跳轉到非法網頁
return input;
}
補充一下,過濾千萬不要把字符串過慮成空,這樣同樣存在安全問題,必須過慮成另外一個字符串,比如過濾你好,那么用戶可以構建這樣一個字符“你你好好”,通過Replace("你好","")之后,
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com