3

我的情况有点不同,我使用 CKEditor 来编辑和显示内容,提交的字符串只会显示在 CKEditor 内部,没有其他地方。

我试过这个 XSS:

<IMG """><SCRIPT>alert("XSS")</SCRIPT>">

我直接从后端将它添加到数据库中,而不是通过 CKEditor,因为我知道 CKEditor 在进入数据库之前做什么并不重要,因为攻击者总是可以发送一些原始 http 请求而不处理 CKEditor。

令我惊讶的是,CKEditor 向我展示了这个:

{cke_protected_1}">

所以CKEditor正在做一些事情来防止XSS,我意识到XSS安全可以从客户端实现。

我的问题是,CKEditor 做得有多好,如果我只使用无属性标签加上它是否可靠

<a><img><table><span><pre>
(<a> and <table> could be disabled if it makes things easier)

PS:CKEditor 使用默认设置。

4

1 回答 1

7

您应该在服务器端防范 XSS。如果您有这种可能性,请在保存之前删除任何不安全的数据。

请注意,所见即所得编辑器必须以某种方式保护包含在已编辑 HTML 中的 JavaScript 代码,以免破坏已编辑内容,其中包括隐藏在所见即所得模式中的<script>标签或将onclick事件处理程序更改为“数据”属性。

{cke_protected_1} 是 CKEditor 试图隐藏 <script> 标记的结果,由于从 XSS 备忘单中获取的有点“hackish”的 HTML,该标记无法完全正常工作。

所见即所得编辑器中的部分内置保护不应被视为替代服务器端针对 XSS 的保护。

于 2012-08-23T20:26:34.130 回答