5

我们正在构建一个用户生成的内容网站,我们希望用户能够在其中嵌入视频、幻灯片共享等内容...任何人都可以推荐一个普遍接受的标签/属性列表以允许在 rails sanitize 中为我们提供相当好的安全性,同时仍然允许大量的可嵌入内容/html格式?

4

3 回答 3

0

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

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

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

于 2010-02-25T21:40:24.720 回答
0

老实说,允许用户使用 WYSIWYG Html 编辑器可能听起来不错,但实际上它对用户和开发人员都不起作用。原因是:

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

如果我现在要做类似 CMS 的系统,我可能会使用语义标记。
大多数用户很快就习惯了它,它只是纯文本(如此处所示)。

您还可以生成正确的 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 使用 modifiedmarkdown并且解析它的代码只有行。

一个缺点是用户需要学习语言并且它不是所见即所得的。

问候,
德米特里。

于 2010-02-26T01:31:29.907 回答
0

有一个很棒的项目。例如,它甚至有嵌入分析,只允许嵌入 youtube

https://github.com/rgrove/sanitize

于 2010-11-28T06:03:12.613 回答