我正在开发一个传统的web应用程序,它同时使用富文本和
summernote editor
,它可以将格式化的笔记保存到我们的服务器上,还可以保存许多内嵌Javascript的实例。
Summernote可以通过它的“代码”视图编写HTML/CSS/JS,但似乎没有任何防止XSS的内置支持。例如,如果您转到他们的主页,请转到编辑器的代码视图,然后编写
<script>alert(0)</script>
我们刚刚发现,最初在应用程序中为这些编辑器实现XSS保护的开发人员做了一点薄弱的工作,现在正在努力确保这一点。到目前为止,我的选择似乎是:
创建/获取一个白名单,该白名单将解析Summernote HTML,并且只允许字段中的某些HTML元素;和/或
(二)
实现CSP头文件并将所有内嵌的JS/CSS移动到单独的文件中。
考虑到只有这些编辑器需要能够将有效的HTML返回给用户,网站的其余部分我们可以并且确实可以完全清理内容,是否可以仅在HTML页面的一部分(即我们加载编辑器内容的区域)禁用内联JS/CSS?或者这不是一种选择/容易受到变通办法的影响?
编辑
:需要注意的是,如果我们选择将内容保存到服务器,富文本编辑器无法阻止XSS,因为它在客户端运行。我的意思是,我找不到关于HTML白名单的资源/建议,或者通过它们的站点对各种服务器进行示例清理。
编辑2
:为了安全起见,肯定会实现某种白名单(也可能是CSP,但重构将是一个头痛的问题),但仍然想知道这是否可能:即在HTML的两个部分之间,是否可能阻止所有内联JS&CSS?