ueditor过滤了script标签,只剩下brush:js;toolbar:false

发布时间:2018-03-21作者:laosun阅读(3392)

ueditor过滤了script标签,只剩下brush:js;toolbar:false

ueditor过滤了script标签,只剩下pre brush:js;toolbar:false,在写作的时候,难免会遇到js类的文章,可是插入的script标签保存完好,访问完好,在二次编辑的时候什么都没了,这可愁坏了,博主加班加点的看着百度的上万行的js代码,一脸茫然。

    ueditor过滤了<script>标签,只剩下<pre class="brush:js;toolbar:false"></pre>,在写作的时候,难免会遇到js类的文章,可是插入的script标签保存完好,访问完好,在二次编辑的时候什么都没了,这可愁坏了,博主加班加点的看着百度的上万行的js代码,一脸茫然,一脸懵逼。

    我测试用的是插入的这么一句话

    <script src="${ctx}/assets/js/XXX.js" type="text/javascript"></script>

    如图(保存成功后,二次编辑看到的如下所示):


    image.png


    image.png



    博主呢,先是看了ueditor.config.js 内的xss防注入过滤那块,屏蔽了倒是可以,output xss过滤修改成了false。

    image.png

     二次编辑的时候只能在html源码下看到,如图所示:

    image.png


    这样用着也不得劲,没办法再修改吧,不过得出了一个结论,就是script标签的转义问题,现在库里存的就是对的,如下所示:

    <pre class="brush:js;toolbar:false">&lt;script&nbsp;src=&quot;${ctx}/assets/js/XXX.js&quot;&nbsp;type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre><p><br/></p>

    只不过在显示的时候自动给转移了,成了如下这种格式

    <pre class="brush:js;toolbar:false"><script src="${ctx}/assets/js/XXX.js" type="text/javascript"></script></pre><p><br/></p>

    不过博主查到了ueditor.all.js ,大约七千多行的地方,有个setContent,想看看是怎么转回去的。


    image.png


    调试了一会,发现太乱了,几万行的代码卡的不得了,打个debugger 断点,cpu狂升,我的还是mac i7 16内存,chrome浏览器都抗议。


    后来实在懒的调了,想着要不直接用ueditor的初始化代码把需要编辑的内容放入textarea域内吧。

    原来我是这么放值的

    <textarea type="text" id="content" name="content">${model.content!}</textarea>

    现在直接去掉后台取值,改成如下:

    image.png


    没想到这么做竟然可以了,后来把xss的代码再修改成true,也没问题。

    但是我也发现了一个问题。如果你的后台html存储了某些引号或者//、换行等符号,这句话报错,目前我没想到什么好的解决办法,及时用上边的js获取到的content内容也不行,所以只能在页面内创建了一个隐藏的节点来存储

    <span id="content2" style="display:none">${model.content!}<span>

    然后代码修改成如下:

    image.png

    到此才算彻底解决这个问题,但是这个方式肯定不好,希望网友们有谁有好的解决办法,告诉我一声,在此感谢了。


0 +1

版权声明

 前端

 请文明留言

1 条评论