下面是他們的字串規則:
1、<(script|link|style|iframe)(.|\n)*<\/\1>\s*
2、\s*on[a-z]+\s*=\s*("[^"]+"|'[^']+'|[^\s]+)\s*(?=>)
3、\s*(href|src)\s*=\s*("\s*(javascript|vbscript):[^"]+"|'\s*(javascript|vbscript):[^']+'|(javascript|vbscript):[^\s]+)\s*(?=>)
4、epression\((.|\n)*\);?
瞭解他們的規則後,抓蟲行動就水到渠成。 <textarea id="bug" cols="80" rows="16"><button id="kick">抓蟲1</button><br /> </p><link href="test.css"><style> a { height:expression(alert('hei')); } </style><p><button id="kick">抓蟲1</button><br />
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]
<textarea id="bug" cols="80" rows="5">test1()" onblur="test3()">test </p><p><button id="kick">抓蟲2</button><br />
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]
<textarea id="bug" cols="80" rows="5">test </p><p><button id="kick">抓蟲3</button><br />
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]
<textarea id="bug" cols="80" rows="5"><br />expression()<br />'red'<br />)">test </p><p><button id="kick">抓蟲4</button><br />
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]
這樣調用就可以
k1(k2(k3(k4(str))))
這樣就是單純地過濾指令碼而已,所謂過濾“危險指令碼”應該是能夠判斷哪些屬於“危險"指令碼,不危險的就不過濾才對……那可就難辦了,相當於防火牆了。