主题: html嵌入问题
作者: 周佳, 发布日期: 2012-05-03 10:45:26, 浏览数: 2989

我现在遇到这样的问题:

用户直接在编辑器内书写html代码和javascript代码,例如输入 <span class="btn"><span><button id="sub" type="submit" >按钮</button> </span> </span>,然后使用火狐firebug插件,选中输入的html代码,使用firebug查看元素,在内容的最前边打上一个空格,则内容就成为了html元素了,而不是文字,提交后界面就会出现上述“按钮”或者其他的html元素,扰乱了页面的布局,如果内容是网页本身的html元素,还能调用页面内的javascript,出现了很多安全问题。这个要如何解决呢?


上述代码输入后传送到后台的内容实际是:&lt;spanclass="btn"&gt;&lt;span&gt;&lt;buttonid="sub" type="submit" &gt;按钮&lt;/button&gt; &lt;/span&gt; &lt;/span&gt;<br />,但是进过firebug或者其他查看元素插件调整后就变成了<span class="btn"><span><button id="sub" type="submit" >按钮</button> </span> </span>,我试图在写库时把所有"<" ,">" 替换成&lt; &gt;,但是这样会把原来的作者给添加的样式给破坏了,目前没有解决办法

作者: Roddy, 发布日期: 2012-05-03 21:57:23
浏览器端根本无法阻止用户输入异常数据,需要在后端过滤,所以编辑器如果面向很多用户,必须启用后端过滤,Java 可以用 jsoup 之类的类库过滤 HTML 。
回复
作者: 周佳, 发布日期: 2012-05-04 10:09:50
回复Roddy:过滤又不能损伤原来用户编辑的样式,这个很麻烦啊
回复
作者: adhehe, 发布日期: 2012-05-04 18:27:24
网上去搜吧,有高人写出java里应用的escape和unescape,你就好好享用吧。
回复
发表新帖 发表回复