Javascript tinymce在数据库安全问题中存储生成的标记

Javascript tinymce在数据库安全问题中存储生成的标记,javascript,security,tinymce,Javascript,Security,Tinymce,我已经将tinymce作为我网站论坛功能的一部分。我获取textarea的innerHTML并将其存储在SQL数据库中 我在查看线程帖子时检索标记 做我正在做的事情是否存在安全问题?tinymce是否有任何内置功能来阻止恶意内容/标记的添加和保存?tinymce在ant内容清理和输入清理(客户端)方面做得非常好。作为一个非常受欢迎的web富文本编辑器,创建者花了大量的精力来确保它的安全性,以防止恶意内容简单地复制和粘贴到编辑器中。您可以执行诸如启用/禁用清理、指定允许哪些标记/属性/字符等操作

我已经将tinymce作为我网站论坛功能的一部分。我获取textarea的innerHTML并将其存储在SQL数据库中

我在查看线程帖子时检索标记


做我正在做的事情是否存在安全问题?tinymce是否有任何内置功能来阻止恶意内容/标记的添加和保存?

tinymce在ant内容清理和输入清理(客户端)方面做得非常好。作为一个非常受欢迎的web富文本编辑器,创建者花了大量的精力来确保它的安全性,以防止恶意内容简单地复制和粘贴到编辑器中。您可以执行诸如启用/禁用清理、指定允许哪些标记/属性/字符等操作

看。注意的选项包括:
有效的\u元素
无效的\u元素
验证html
有效的\u样式
无效的\u样式
,以及
扩展的\u有效的\u元素

另外:您可能应该使用tinyMce的getContent()函数,而不是获取textarea的innerHtml。见:

但这都是客户端javascript

尽管这些功能很好,但所有这些清理仍然在客户端上进行。因此,可以想象,可以修改客户端JS以停止转义/删除恶意内容。或者有人可以在不通过浏览器的情况下(使用curl或任何其他工具)将错误数据发布到您的请求处理程序中

因此tinyMce提供了一个很好的客户端清理基线,但是为了安全起见,服务器应该假设它发送的任何内容都是脏的,因此应该谨慎对待所有内容

服务器可以完成的事情:

即使您实现了最复杂的客户端验证/清理/预防,就后端的安全而言,这也是毫无价值的。在和上可以找到防止恶意数据注入的优秀参考资料。您不仅要防止SQL注入类型的攻击,而且还要防止XSS攻击,如果任何用户提交的数据将显示在网站上供其他不知情的用户查看

除了清理服务器上的用户输入数据外,您还可以尝试一些操作,例如挤压包含某些表示恶意请求的模式的请求。您还可以在客户端和服务器端强制执行输入的最大长度,以及为服务器添加最大请求大小,以确保没有人尝试发送GB的数据。如何设置最大请求大小因服务器而异。违反“最大请求大小”将导致出现

,此外,您应该在输出富文本的任何页面上实现

这允许您有效地阻止浏览器执行内联脚本。它目前是现代浏览器,如Chrome和Firefox

这是通过页面中的HTTP响应头完成的

e、 g

如果用户设法将内联JavaScript插入到您的页面中,将停止执行内联JavaScript(将被忽略并发出警告),但将允许脚本标记引用您自己的服务器或
https://apis.google.com
。这可以根据您的需要定制


即使您使用HTML消毒剂去除任何恶意标记,将其与CSP结合使用是一个好主意,以防网络中出现任何漏洞。

不幸的是,getContent是不可能的,因为我正在从ASPX后端访问标记-我不知道如何从服务器端调用客户端javascript来回击内容!如果有什么我可以补充的,请告诉我,以帮助您。
Content-Security-Policy: script-src 'self' https://apis.google.com