Rails Sanitize:安全+允许嵌入

时间:2010-02-25 17:04:47

标签: ruby-on-rails sanitization html-sanitizing

我们正在构建一个用户生成的内容网站,我们希望用户能够嵌入视频,幻灯片等内容...任何人都可以推荐一个普遍接受的标签/属性列表,以便在rails中清理会给我们相当不错的安全性,同时仍然允许大量的可嵌入内容/ html格式化吗?

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分: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使用修改后的markdown,解析它的代码只是couple行。

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

的问候,
德米特里。

答案 2 :(得分:0)

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

https://github.com/rgrove/sanitize