此链接描述了使用 fckEditor 对我的应用程序的攻击:http://knitinr.blogspot.com/2008/07/script-exploit-via-fckeditor.html

如何在仍然使用 fckEditor 的同时确保我的应用程序的安全?是fckEditor配置吗?从 fckEditor 获取文本后,我应该在服务器端进行一些处理吗?

这是一个谜题,因为 fckEditor 用途 html 标签的格式,所以当我显示文本时我不能只进行 HTML 编码。

有帮助吗?

解决方案

清理 html 服务器端,别无选择。对于 PHP 来说是 HTML 净化器, ,对于.NET我不知道。清理 HTML 是很棘手的 - 仅仅去除脚本标签是不够的,您还必须注意 on* 事件处理程序,甚至更多,这要归功于 IE 的愚蠢行为。

此外,通过自定义 html 和 css,很容易劫持网站的外观和布局 - 使用覆盖所有屏幕等的覆盖层(绝对定位)。为此做好准备。

其他提示

该错误实际上并不是 FCKeditors 的错。只要您允许用户编辑将在您的网站上显示的 HTML,他们就总是有可能造成伤害,除非您在输出数据之前检查数据。

有些人使用 HTMLencoding 来做到这一点,但这会破坏 FCKeditor 完成的所有格式,而不是您想要的。


也许你可以使用 Microsoft 反跨站脚本库. 。样品于 微软软件定义网络

从 fckEditor 获取文本后,我应该在服务器端进行一些处理吗?

恰恰。StackOverflow 也有一些与此相关的早期问题。解决这个问题的最简单方法是使用 HTML 库来解析用户的输入,然后转义输出中不需要的任何标签。将此作为打印到页面时的后处理步骤 - 数据库中的数据应与用户输入的数据完全相同。

例如,如果用户输入 <b><script>evil here</script></b>, ,您的代码会将其转换为 <b>&lt;script&gt;evil here&lt;/script&gt;</b> 在渲染页面之前。

不要 使用正则表达式来解决这个问题,这只是邀请聪明的人再次打破它。

FCKEditor 可以配置为仅使用几个标签。您需要对除那几个标签之外的所有内容进行编码。

这些标签是:<strong> <em> <u> <ol> <ul> <li> <p> <块引用> <字体> <span>。

字体标签只应具有字体和大小属性。span 标签应该只有一个 class 属性。

这些标签不允许有其他属性。

我理解不该做的事情。我缺少一个DO。

是否要求使用 FCKEditor,或者您可以使用不同的编辑器/标记语言吗?我建议使用 Markdown 和 WMD 编辑器,这与 StackOverflow 使用的语言相同。.NET 的 Markdown 库应该有一个转义所有 HTML 标签的选项——一定要打开它。

XSS 是一件棘手的事情。我建议阅读一些内容:

无论如何,我的总结是,归根结底,你必须只允许严格接受的项目;你不能拒绝已知的利用向量,因为否则你将永远是永恒斗争的幕后黑手。

我认为有些人提出的问题并不是Fckeditor只编码几个标签。这是一个天真的假设,认为邪恶的用户会使用 Fckeditor 来编写他的恶意代码。允许手动更改输入的工具有很多。

我将所有用户数据视为受污染的;并使用 Markdown 将文本转换为 HTML。它会清理文本中发现的所有 HTML,从而减少恶意行为。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top