最近做博客系统,使用了最新的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源码为:<script type='text/javascript'>console.log('sb');</script>
再进一步看
我Ueditor输入的这段<script type='text/javascript'>console.log('sb');</script>经htmlspecialchars后为:
<p>&lt;script type=&#39;text/javascript&#39;&gt;console.log(&#39;sb&#39;);&lt;/script&gt;</p>
而我直接将<script type='text/javascript'>console.log('sb');</script>进行htmlspecialchars后为:<script type='text/javascript'>console.log('sb');</script>