带有bb代码的Rails注释系统



在我的rails 4应用程序中,我想为我的文章添加评论,但我想像大多数论坛引擎一样添加功能(如SMF),我需要为此添加bb代码。

有什么好的宝石吗?有轨道4支撑?那么,在控制器中,我如何将[quote]翻译成某种风格的div?

此外,在数据库中存储html数据有什么好处?

例如,如果我使用haml,并且有人将评论作为发布

- current_user.id

或者类似的事情,如何保护我的应用程序免受"坏男孩"的攻击?当然,我可以将注释系统更改为:quote_parent_id,但如果我在一个注释中有多个引号?所以这很难实现,最好是存储html,但要以某种方式保护它。

我能做这个吗?如何?请提供好的想法,教程,宝石链接。

查看https://github.com/veger/ruby-bbcode

由于它可以转换为HTML,并且不会像Ruby代码那样出色地进行用户输入,因此您将相当安全。然而,我还没有尝试过gem,它可能会引入一些XSS漏洞。

你考虑过降价吗?

您还应该了解https://github.com/asceth/bbcoder(我应该注意,我是原作者)。

在控制器中,将诸如"[quote=user]My post of epic importance[/quote]"之类的字符串更改为div等只需执行以下操作:

# assume params[:comment] is the text you are converting
params[:comment].bbcode_to_html

至于将html存储在数据库中,没有正确或错误的答案。如果你想允许用户稍后编辑他们的帖子,那么我倾向于不存储html版本,而是存储他们的原始bbcode版本。这样,当你允许他们编辑时,你就不必将html转换回bbcode。

为了确保你不会对XSS和其他攻击持开放态度,我建议你结合其他宝石,比如消毒液。

Sanitize.clean(text.to_s).bbcode_to_html

更多注意事项:

在不需要任何额外步骤的情况下,多个标记和嵌套标记将在可见时进行解析。因此,只需对变量/string调用bbcode_to_html,就可以处理带有大量bbcode标记、多个引号、b标记或其他任何内容的评论或帖子。

如果用户试图在帖子中使用haml,它应该显示为原样。haml不应该尝试评估字符串,除非你特别告诉它,我甚至不知道如何做到这一点,除非haml是一个特殊的过滤器或运算符。

最新更新