在输出前过滤TinyMCE javascript

时间:2019-05-01 08:43:35

标签: javascript php database security tinymce

我在文本区域上使用TinyMCE,该区域在服务器端提交并存储在数据库中。我在数据库中拥有的示例可能是:

<p>&lt;script&gt;console.log("mce");&lt;/script&gt;</p>

因此,javascript已被转义。我的问题是,如果恶意用户绕过TinyMCE,而只是使用未转义的javascript在textarea中提交原始数据,该怎么办?

当另一个用户需要显示此内容时,如何安全输出?我不能使用htmlspecialchars,因为我想要html内容本身。我可以手动检查服务器端(Laravel)是否有任何<script></script标记并重写它们,但是内联javascript呢?

1 个答案:

答案 0 :(得分:2)

您永远不能假定提供给您客户端的数据是“干净的”或“安全的”。正如您正确地推测的那样,邪恶的人可以绕过您的前端及其所有验证。

您应该始终正确配置前端。验证数据,将TinyMCE配置为仅允许您要创建的那些类型的标签,等等。

但是,无论前端设计如何,为了安全起见,始终必须在服务器上重新检查提交的内容。根本无法解决这种需求。

服务器端可以使用许多不同的库来进行这种验证/清除,包括原始帖子的注释中提到的HTML Purifier。