在输出之前过滤TinyMCE javascript

问题描述 投票:1回答:1

我在textarea上使用TinyMCE,它在服务器端提交并存储在数据库中。我在数据库中拥有的一个例子可能是:

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

所以,javascript已经被转义了。我的问题是,如果恶意用户绕过TinyMCE并仅使用未转义的javascript在textarea中提交原始数据,该怎么办?

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

javascript php database security tinymce
1个回答
2
投票

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

您应该始终适当地配置前端。验证数据,将TinyMCE配置为仅允许您想要创建的那些类型的标记等。

但是,无论前端设计如何,您都必须重新检查服务器上提交的内容是否安全。没有办法满足这种需求。

有许多不同的库,您可以使用服务器端来执行此类验证/清理,包括在原始帖子的注释中提到的HTML Purifier。

© www.soinside.com 2019 - 2024. All rights reserved.