主题: 关于javascript会在编辑器中运行问题
作者: koywang, 发布日期: 2011-04-11 12:58:26, 浏览数: 4198

这两天在一个项目中的日志模块用到该编辑器,然后随便copy了一下东西到编辑器中,保存进数据库后然后获取数据进行修改发现在编辑器中会执行那些javascript代码,不知道怎么让编辑器不运行js脚本而是直接输出~~求解!!

以下全部是问题代码:

 

<html> 
<head><title>跑马灯大全</title> 
<script LANGUAGE="JavaScript"> 
<!-- Begin 
var Mes=new Array(); 
Mes[0]="洪恩在线欢迎你! "; 
Mes[1]="感谢你关注电脑交互教程 "; 
Mes[2]="网页制作技巧 之 跑马灯大全 "; 
var place=1; 
var i=0; 
function scroll() 
{ 
window.status=Mes[i].substring(0, place); 
if (place >= Mes[i].length) 
{ 
if(i<2) 
{ 
i++; 
place=1; 
window.setTimeout("scroll()",50); 
} 
else 
{ 
i=0; 
place=1; 
window.setTimeout("scroll()",50); 
} 
} 
else { 
place++; 
window.setTimeout("scroll()",50); 
} 
} 
// End --> 
</script> 
</head> 
<form name="shooterform" method="get"> 
<body onload="scroll();"> 
<marquee>滚动的文字</marquee> 
<marquee behavior=alternate>表示双向移动</marquee> 
<marquee direction=left>表示运动方向向左</marquee> 
<marquee width=400 behavior=alternate direction=left align=middle border=1>弹来弹去跑马灯!</marquee> 
<marquee scrollamount="30">表示运动方向向左</marquee> 
<marquee width=90%> 
<a href="http://www.hongen.com/default.htm" target=_blank>带有超链接的跑马灯!点我试试?</a><br /> 
<a href="http://www.hongen.com/pc/index.htm" target=_blank>还有一条呢!点我试试?</a> 
</marquee>

<table width="93%" border="1" cellspacing="0" cellpadding="1" align="center" class="p1"> 
<tr> 
<td width="42%">参数</td> 
<td width="58%">用法介绍</td> 
</tr> 
<tr> 
<td width="42%">behavior=scroll, slide, alternate</td> 
<td width="58%">跑马方式:循环绕行,只跑一次就停住,来回往复运动</td> 
</tr> 
<tr> 
<td width="42%">direction=left,right</td> 
<td width="58%">跑马方向:从左向右,从右向左</td> 
</tr> 
<tr> 
<td width="42%">loop=100</td> 
<td width="58%">跑马次数:循环100次,如不写默认为一直循环</td> 
</tr> 
<tr> 
<td width="42%">width=100%,height=200</td> 
<td width="58%">跑马范围:宽为100%,高为200像素</td> 
</tr> 
<tr> 
<td width="42%">scrollamount=20</td> 
<td width="58%">跑马速度:数越大越快</td> 
</tr> 
<tr> 
<td width="42%">scrolldelay=500</td> 
<td width="58%">跑马延时:毫秒数,利用它可实现跃进式滚动</td> 
</tr> 
<tr> 
<td width="42%">hspace=20,vspace=20</td> 
<td width="58%">跑马区域与其它区域间的空白大小</td> 
</tr> 
<tr> 
<td width="42%">bgcolor=#00FFCC</td> 
<td width="58%">跑马区域的背景颜色</td> 
</tr> 
</table> 
</body> 
</form> 
</html>

作者: oicq, 发布日期: 2011-04-11 15:54:38
我也发现此问题了
把鼠标放这里试一下
回复
作者: oicq, 发布日期: 2011-04-11 15:56:34

这里的给过滤掉了,我下载的例子中没过滤。

回复
作者: oicq, 发布日期: 2011-04-11 16:24:32

在HTML模式下,用一个最简单的 [div onmouseover="alert('33333333');"][/div]测试过了。

不用提交,从HTML模式切换到所见即所得模式,移动鼠标,会弹出警告框。

 

3.5.2就不存在这个BUG,

3.5.3就存在这个BUG

回复
作者: Roddy, 发布日期: 2011-04-11 17:25:14

这方面一直没做处理,3.5.2没问题的原因可能是用了designMode方式,3.5.3开始用contentEditable了,不过非IE浏览器一直有这个问题。

解决方案是,先把script替换成一个不可见的标签,最后输出时再还原,onclick等属性也要转换的。我先记录一下,下一个版本应该能修复这个问题。

回复
作者: oicq, 发布日期: 2011-04-11 20:06:52

下个版本大概什么时间出来?

我等下个版本再用。

回复
作者: oicq, 发布日期: 2011-04-11 21:28:37

还有个问题。


使用kindeditor编辑器,在输出内容时,如何解决XSS攻击的问题?


既然支持HTML语法,又让用户自己输入代码,那就得防止用户输入破坏性的代码。


怎样才能过滤掉破坏性的代码,同时又保证编辑器正常的代码?


有没有现成的过滤函数?


给个例子也行。

回复
作者: Roddy, 发布日期: 2011-04-11 21:54:10

kindsoft论坛用这个,其它语言也有相应的类库,自己用正则匹配也可以,一定要在服务器端过滤。

http://htmlpurifier.org

 

回复
发表新帖 发表回复