【发布时间】:2011-01-21 02:42:02
【问题描述】:
我们正在构建一个用户生成的内容网站,我们希望用户能够在其中嵌入视频、幻灯片共享等内容...任何人都可以推荐一个普遍接受的标签/属性列表,以允许在 rails 中对其进行清理会给我们提供很好的安全性,同时仍然允许大量的可嵌入内容/html 格式?
【问题讨论】:
标签: ruby-on-rails sanitization html-sanitizing
我们正在构建一个用户生成的内容网站,我们希望用户能够在其中嵌入视频、幻灯片共享等内容...任何人都可以推荐一个普遍接受的标签/属性列表,以允许在 rails 中对其进行清理会给我们提供很好的安全性,同时仍然允许大量的可嵌入内容/html 格式?
【问题讨论】:
标签: ruby-on-rails sanitization html-sanitizing
只要是关闭的,你应该可以允许对象。您甚至可以定义对象标签的实际可接受参数,以便您只允许白名单,而不能包含任意对象。
但是,为嵌入提供一些 UI 支持可能会更好。例如,我提示用户输入 YouTube URL,然后从中派生视频的嵌入代码。
几个好处: - 默认的 YouTube 代码不符合标准,因此我可以构建自己的对象代码 - 我可以完全控制嵌入元素包含在输出页面中的方式
【讨论】:
老实说,允许用户使用 WYSIWYG Html 编辑器可能听起来不错,但实际上它对用户和开发人员都不起作用。原因是:
如果我现在要做类似 CMS 的系统,我可能会使用 语义 标记。
大多数用户很快就会习惯它,它只是纯文本(如这里在 SO)。
您还可以生成正确的 HTML 并支持所需的标签。
例如,如果您需要嵌入图片,您可以编写如下内容:
我的脸:image-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 的行数。
一个缺点是用户需要学习该语言并且它不是所见即所得的。
问候,
德米特里。
【讨论】:
有一个很棒的项目。它甚至有嵌入分析,例如只允许 youtube 嵌入
【讨论】: