过滤所见所得编辑器里的危险脚本

所见所得的编辑器现在用得越来越多,原因之一,用户体验好。但是作为开发者,我们也应该清醒的认识到,这样的编辑器往往成了危险脚本、木马的温床。我们不能容忍蛀虫就在我们自己的东西里面滋生。下面我就来尝试用正则替换的办法,使得编辑器里面的脚本无所遁形。可能我想的不是很全面,希望有漏网之鱼的,朋友们请提出。脚本藏身之处不过有四:1、<script>标签2、on开头的标签属性3、javascript(vbscript)伪协议4、css的epression5、<iframe>标签下面是他们的字符串规则:1、<script(.|\n)*\/script>\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)*\);?5、<iframe(.|\n)*\/iframe>\s*了解他们的规则后,抓虫行动就水到渠成。下面看具体代码:

<textarea id="bug" cols="80" rows="5"><button id="kick">抓虫1</button><script>function kickBug(str) { return str.replace(/<script(.|\n)*\/script>\s*/ig,"");}HTMLElement.prototype.__defineGetter__("innerText",function(){return this.textContent;});HTMLElement.prototype.__defineSetter__("innerText",function(text){this.textContent = text;});document.getElementById("kick").onclick = function() { var bug = document.getElementById("bug"); bug.innerText = kickBug(bug.innerText);}</script></textarea><button id="kick">抓虫</button><script>function kickBug(str) { return str.replace(/<script(.|\n)*\/script>\s*/ig,"");}HTMLElement.prototype.__defineGetter__("innerText",function(){return this.textContent;});HTMLElement.prototype.__defineSetter__("innerText",function(text){this.textContent = text;});document.getElementById("kick").onclick = function() { var bug = document.getElementById("bug"); bug.innerText = kickBug(bug.innerText);}</script>

不要哭,你要努力地往前看,你要相信阳光总在风雨后,你最终会看到彩虹的。

过滤所见所得编辑器里的危险脚本

相关文章:

你感兴趣的文章:

标签云: