table

          正則表達(dá)式過濾HTML危險(xiǎn)腳本

          在做一些網(wǎng)站(特別是bbs之類)時(shí),經(jīng)常會(huì)有充許用戶輸入html樣式代碼,卻禁止腳本的運(yùn)行的需求, 以達(dá)到豐富網(wǎng)頁樣式,禁止惡意代碼的運(yùn)行。
          當(dāng)然不能用 htmlencode 和 htmldecode 方法,因?yàn)檫@樣連基本的html代碼會(huì)被禁止掉。
          我在網(wǎng)上搜索,也沒有找到好的解決辦法,倒是收集了一些腳本攻擊的實(shí)例:
          1. <script>標(biāo)記中包含的代碼
          2. <a href=
          javascript:...中的代碼
          3. 其它基本控件的 on...事件中的代碼
          4. iframe 和 frameset 中載入其它頁面造成的攻擊
          有了這些資料后,事情就簡單多了,寫一個(gè)簡單的方法,用正則表達(dá)式把以上符合幾點(diǎn)的代碼替換掉:
          public string wipescript(string html)
          {
          system.text.regularexpressions.regex regex1 = new system.text.regularexpressions.regex(@"<script[\s\s]+</script *>",system.text.regularexpressions.regexoptions.ignorecase);
          system.text.regularexpressions.regex regex2 = new system.text.regularexpressions.regex(@" href *= *[\s\s]*script *:",system.text.regularexpressions.regexoptions.ignorecase);
          system.text.regularexpressions.regex regex3 = new system.text.regularexpressions.regex(@" on[\s\s]*=",system.text.regularexpressions.regexoptions.ignorecase);
          system.text.regularexpressions.regex regex4 = new system.text.regularexpressions.regex(@"<iframe[\s\s]+</iframe *>",system.text.regularexpressions.regexoptions.ignorecase);
          system.text.regularexpressions.regex regex5 = new system.text.regularexpressions.regex(@"<frameset[\s\s]+</frameset *>",system.text.regularexpressions.regexoptions.ignorecase);
          html = regex1.replace(html, ""); //過濾<script></script>標(biāo)記
          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代碼,返回則就是干凈的代碼了。

          posted on 2008-12-15 11:50 小卓 閱讀(185) 評論(0)  編輯  收藏 所屬分類: html and js

          主站蜘蛛池模板: 锦州市| 河津市| 百色市| 湾仔区| 黄龙县| 新干县| 县级市| 杂多县| 永川市| 新疆| 铜鼓县| 花莲市| 延吉市| 加查县| 大同县| 江北区| 宜都市| 中宁县| 武平县| 蓬溪县| 大渡口区| 密山市| 聊城市| 桃源县| 曲水县| 孟村| 瑞丽市| 拉萨市| 含山县| 南汇区| 邢台县| 东明县| 潞城市| 邵阳市| 松溪县| 保定市| 蓝山县| 苏尼特右旗| 天津市| 九寨沟县| 双城市|