我正在为客户启动托管类似CMS的服务。

正如它所做的那样,它需要客户输入文本,这些文本将提供给访问其网站的任何人。我打算使用Markdown,可能与WMD(SO使用的实时降价预览)结合使用,用于大块文本。

现在,我应该清理他们对html的输入吗?鉴于只有少数人编辑他们的“CMS”,所有付费客户,我应该剥离坏HTML,还是应该让他们疯狂?毕竟,这是他们的“网站”

编辑:为什么我会这样做的主要原因是让他们使用自己的javascript,并拥有自己的css和div以及什么不用于输出

有帮助吗?

解决方案

为什么不会您清理输入?

如果你不这样做,你就是在向客户或你自己或两者提出灾难。

其他提示

你的问题是:

"编辑:为什么我会这样做的主要原因是让他们使用自己的javascript,并拥有自己的css和div以及什么不用于输出"。

如果您允许用户提供任意JavaScript,那么清理输入是不值得的。跨站点脚本(XSS)的定义基本上是“用户可以提供JavaScript而一些用户不好”。

现在,一些网站确实允许用户提供JavaScript,并通过以下两种方式之一来降低风险:

  1. 在不同的域下托管单个用户的CMS。 Blogger和Tumblr(例如myblog。 blogspot .com与blogger.com)这样做是为了防止用户的模板窃取其他用户的cookie。您必须知道自己在做什么,并且永远不会在根域下托管任何用户内容。
  2. 如果用户之间永远不会共享用户内容,那么恶意用户提供的脚本无关紧要。但是,CMS是关于共享的,所以这可能不适用于此

有一些可能有效的黑名单过滤器,但它们只能今天。 HTML规范和浏览器会定期更改,这使得过滤器几乎无法维护。黑名单是解决安全和功能问题的必然方法。

处理用户数据时,请始终将其视为不受信任。如果您在产品的早期阶段没有解决这个问题并且您的方案发生了变化,那么几乎不可能回过头来查找所有XSS点或修改产品以防止XSS而不会扰乱您的用户。

您还将再次保护心怀不满的员工,跨越客户攻击或任何其他类型的愚蠢行为。

无论用户还是观众,都应该始终进行消毒。

至少解析他们的条目只允许某个“安全”的条目。 HTML标签的子集。

我认为你应该始终清理输入。大多数人使用CMS是因为他们不想从头开始创建自己的网站,他们希望轻松访问以编辑他们的网页。这些用户很可能不会尝试输入可以消毒的文本,但通过防范它,您可以保护他们的用户。

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