2010-02-25 50 views
5

我们正在构建用户生成的内容网站,我们希望用户能够嵌入视频,幻灯片等内容......任何人都可以推荐一个普遍接受的标签/属性允许在rails中进行消毒,这会给我们提供很好的安全性,同时仍然允许大量的可嵌入内容/ html格式?Rails Sanitize:安全+允许嵌入

回答

0

只要关闭,您应该可以允许使用对象。您甚至可以定义对象标签的实际可接受参数,以便只允许白名单,并且不能包含任意对象。

但是,为嵌入提供一些UI支持可能会更好。例如,我会提示用户输入YouTube网址,然后从中获取视频的嵌入代码。

以下几个好处: - 默认YouTube的代码不符合标准,所以我可以构建自己的对象代码 - 我有超过嵌入式元素都包含在输出页面的方式完全控制

0

老实说说,允许用户使用所见即所得的Html编辑器听起来不错,但在实践中,它对用户和开发人员来说都不太好。原因是:

  • 在不同浏览器中的行为仍然不同。
  • 白名单允许保护网站,但用户最终会打电话并要求允许另一个参数作为OBJECT标签或类似名称。黑名单并不安全。
  • 很多用户都知道HTML标签是什么。
  • 对于用户来说很难格式化文本(你怎么能告诉他们使用HEADER而不是BOLD + FONT-SIZE)。
  • 一般来说,这是非常痛苦的,如果需要,您不能真正改变网站设计,因为用户没有正确使用HTML。

如果我会现在正在做CMS-like系统,我可能会用语义标记去。
大多数用户,快速适应它,它只是纯文本(如在这里)。

此外,您可以生成正确的HTML和支持所需的标签。
例如,如果你需要嵌入的图片你可以写这样的:

我面图像 - http://here.there/bla.gif

这将生成HTML你是这样的:

<a class='image-link' title='My Face' href='http://here.there/bla.gif'> 
    <img alt='My Face' src='http://here.there/bla.gif' /> 
</a> 

有很多标记语言,所以只需选择一个更适合您并添加自己的修改。

例如,GitHub使用修改后的markdown,解析它的代码只是一行couple

一个缺点是用户需要学习语言,而不是所见即所得。

Regards,
Dmitriy。

+0

你的意思是像降价不需要任何卫生无论如何? – Noz

+0

@Noz不,我不是。 –