正則表達式過濾HTML危險腳本的實例
導語:在做一些網站(特別是bbs之類)時,經常會有充許用户輸入html樣式代碼,卻禁止腳本的運行的需求, 以達到豐富網頁樣式,禁止惡意代碼的運行。以下的是本站小編為大家蒐集的正則表達式過濾HTML危險腳本的實例,希望對你會有所幫助。
不能用 htmlencode 和 htmldecode 方法,因為這樣連基本的html代碼會被禁止掉。
以下是一些腳本攻擊的實例:
1. <script>標記中包含的代碼
2. <a href=javascript:...中的代碼
3. 其它基本控件的` on...事件中的代碼
4. iframe 和 frameset 中載入其它頁面造成的攻擊
有了這些資料後,事情就簡單多了,下面簡單的方法,用正則表達式把以上符合幾點的代碼替換掉:
public string wipescript(string html)
{
x regex1 = new x(@"<script[ss]+</script *>",recase);
x regex2 = new x(@" href *= *[ss]*script *:",recase);
x regex3 = new x(@" on[ss]*=",recase);
x regex4 = new x(@"<iframe[ss]+</iframe *>",recase);
x regex5 = new x(@"<frameset[ss]+</frameset *>",recase);
html = ace(html, ""); //過濾<script></script>標記
html = ace(html, ""); //過濾href=javascript: (<a>) 屬性
html = ace(html, " _disibledevent="); //過濾其它控件的on...事件
html = ace(html, ""); //過濾iframe
html = ace(html, ""); //過濾frameset
return html;
}
此方法輸入可能包含腳本的html代碼,返回則就是乾淨的代碼了。
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...
-
HTML5教程:畫布Canvas基礎知識講解
Canvas是HTML5最讓人期待的特性之一,目前已獲得大部分Web瀏覽器支持Canvas可以幫助創建遊戲、增強圖形用户界面。下面YJBYS小編為大家帶來畫布Canvas基礎知識,希望對大家學習有所幫助!HTML5規範引進了很多新特性,其中最令人期待的之一就是Canvas元素。HTML5Canvas...
-
如何獲取PHP數組的鍵與值呢
array_keys($array);//獲取數組(字典)的所有鍵值,返回一個鍵值數組。array_values($array)://獲取數組的所有value值,飯回一個數組。<?php$json='{"a":1,"b":2,"c":3,"d":4,"e":5}';//註明:value不帶雙引號時,其值只能是數字。【!!!注意:大括號兩邊只能是單引號,...
-
PHP開發工程師的主要職責
PHP開發工程師的主要職責1職責:1、負責公司後端的研發,保障系統的穩定性和質量2、與業務需求部門及項目經理溝通,理解需求,進行架構設計;3、搭建開發框架、負責核心代碼的編寫,解決技術難點;4、界定、分析和解決系統中存在的問題和缺陷;5、對系統進行持續改進,提升系...