萬盛學電腦網

 萬盛學電腦網 >> 網頁制作 >> 腳本Html教程 >> 正則表達式過濾HTML危險腳本

正則表達式過濾HTML危險腳本

  在做一些網站(特別是bbs之類)時,經常會有充許用戶輸入html樣式代碼,卻禁止腳本的運行的需求, 以達到豐富網頁樣式,禁止惡意代碼的運行。
當然不能用 htmlencode 和 htmldecode 方法,因為這樣連基本的html代碼會被禁止掉。
以下是一些腳本攻擊的實例:
1. <script>標記中包含的代碼
2. <a href=javascript:...中的代碼
3. 其它基本控件的 on...事件中的代碼
4. iframe 和 frameset 中載入其它頁面造成的攻擊
有了這些資料後,事情就簡單多了,下面簡單的方法,用正則表達式把以上符合幾點的代碼替換掉:
public string wipescript(string html)
{
system.text.regularexpressions.regex regex1 = new system.text.regularexpressions.regex(@"<script[ss]+</script *>",system.text.regularexpressions.regexoptions.ignorecase);
system.text.regularexpressions.regex regex2 = new system.text.regularexpressions.regex(@" href *= *[ss]*script *:",system.text.regularexpressions.regexoptions.ignorecase);
system.text.regularexpressions.regex regex3 = new system.text.regularexpressions.regex(@" on[ss]*=",system.text.regularexpressions.regexoptions.ignorecase);
system.text.regularexpressions.regex regex4 = new system.text.regularexpressions.regex(@"<iframe[ss]+</iframe *>",system.text.regularexpressions.regexoptions.ignorecase);
system.text.regularexpressions.regex regex5 = new system.text.regularexpressions.regex(@"<frameset[ss]+</frameset *>",system.text.regularexpressions.regexoptions.ignorecase);
html = regex1.replace(html, ""); //過濾<script></script>標記
html = regex2.replace(html, ""); //過濾href=javascript: (<a>) 屬性
html = regex3.replace(html, " _disibledevent="); //過濾其它控件的on...事件
html = regex4.replace(html, ""); //過濾iframe
html = regex5.replace(html, ""); //過濾frameset
return html;
}
此方法輸入可能包含腳本的html代碼,返回則就是干淨的代碼了。

copyright © 萬盛學電腦網 all rights reserved