Javascript 如何在使用所见即所得编辑器之前删除不安全的内容?

Javascript 如何在使用所见即所得编辑器之前删除不安全的内容?,javascript,wysiwyg,Javascript,Wysiwyg,如何在使用之前删除所见即所得编辑器的不安全内容,如脚本标记或iframe标记和其他标记的事件 <script> // Dangerous contents </script> <iframe> // bad web pages </iframe> <span onclick="javascript://do bad work here !!!">click me</span> //危险物品 //坏网页 点击我 我们可

如何在使用之前删除所见即所得编辑器的不安全内容,如脚本标记或iframe标记和其他标记的事件

<script>
// Dangerous contents
</script>

<iframe>
// bad web pages
</iframe>

<span onclick="javascript://do bad work here !!!">click me</span>

//危险物品
//坏网页
点击我

我们可以使用像这样的javascript函数来中立化

function neutralizeText(text) {
    var i,mtch=text.match(/(<[a-z]+\s+[^>]*\s+|<[a-z]+\s+)on[a-z]+(\s)*=(\b|\s|[^>])*>/gi);
    if(mtch!=null) {
        for(i=0;i<mtch.length;i++) {
            text=text.replace(mtch[i],mtch[i].replace(/\s+on[a-z]+(\s)*=/gi,' data-neutralized='));
        }
    }
    text=text.replace(/<script(\b|\s)[^>]*>(([ \t\r\n]|.)*?)<\/script>/ig,'');
    text=text.replace(/<iframe(\b|\s)[^>]*>(([ \t\r\n]|.)*?)<\/iframe>/ig,'');
    text=text.replace(/<object(\b|\s)[^>]*>(([ \t\r\n]|.)*?)<\/object>/ig,'');
    text=text.replace(/<\!\-\-(.*?)\-\->/g,'');
    text=text.replace(/<\!\-\-/g,'');
    return text;
}
函数文本(text){
变量i,mtch=text.match(/(]*\s+|])*>/gi);
如果(mtch!=null){
对于(i=0;i([\t\r\n]|.*?)/ig,”);
text=text.replace(/]*>([\t\r\n]|.*?)/ig,”);
text=text.replace(/]*>([\t\r\n]|.*?)/ig,”);
text=text.replace(//g',);

text=text.replace(/您不应该试图自己编写这样的保护


特别是,您不应该将保护放在客户端(javascript),但改用服务器端过滤,如

我认为应该说不应该将保护放在客户端。@我其他人的API也应该有服务器端保护。只依赖客户端保护是不好的做法,因为这是可以避免的。@Chris,是的,你是对的:-)iman即使你必须使用客户端保护,你也应该搜索现有的库。这是一种客户端保护方式为什么?如果代码来自编辑器,那么它是由用户输入的。如果你使用JS处理代码,那么唯一可能受到伤害的人就是该用户。你无法阻止用户攻击自己如果你在那里阻止他们,那么他们可以使用其他途径(比如浏览器的JavaScript控制台)。