ueditor的安全过滤机理

manbudezhu 发布于 2017/08/03 16:06
阅读 463
收藏 0

最近做博客系统,使用了最新的Ueditor(百度编辑器),比较担心安全注入的问题,做了一些测试.

我项目的思路是将编辑器中输入的内容使用htmlspecialchars方法实体化后存入数据库中,然后在需要显示文章时使用htmlspecialchars_decode还原.

但是我发现一个奇怪的现象:
例如我在Ueditor中输入:`<script type='text/javascript'>console.log('sb');</script>`和图片以及一段编辑好的文字。使用htmlspecialchars_decode 还原后,html图片显示正常,文字样式正常。而那一段js代码原样输出了<script type='text/javascript'>console.log('sb');</script>,我查看其html源码为:

`&lt;script type=&#39;text/javascript&#39;&gt;console.log(&#39;sb&#39;);&lt;/script&gt;`

再进一步看
我Ueditor输入的这段<script type='text/javascript'>console.log('sb');</script>经htmlspecialchars后为:

`&lt;p&gt;&amp;lt;script type=&amp;#39;text/javascript&amp;#39;&amp;gt;console.log(&amp;#39;sb&amp;#39;);&amp;lt;/script&amp;gt;&lt;/p&gt;`


而我直接将<script type='text/javascript'>console.log('sb');</script>进行htmlspecialchars后为:

`&lt;script type='text/javascript'&gt;console.log('sb');&lt;/script&gt;`

这两个地方的不同,让Ueditor有效的阻止掉了script脚本的运行,那么ueditor 在我提交表单之前对script标签做了什么安全处理?
这样是不是能有效的防止script脚本的过滤,在后台需不需要再利用htmlpurifier之类进行白名单过滤了。在富文本编辑器这种案例中既要保持样式,又要过滤xss,单独替换<符号肯定无法实现了,是不是只有通过白名单一条路了。请大家指教

加载中
0
Yihrmc_
Yihrmc_

就破解了html

返回顶部
顶部