为什么我应该在评论表单中使用BBCode而不是HTML?

Jon*_*Jon 7 html security validation bbcode

我在PHP中编写了一个注释解析函数.

由于BBCode不是真正的标记语言,我从不喜欢写作风格.
所以我让访问者能够在评论表单中使用基本的HTML代码.
在发布时,PHP将检查不允许的和无效的标签/属性,并替换或删除它们.

我相信它做的工作与BBCode完全相同.

如果这是真的,为什么有BBCode?BBcode比HTML更有优势吗?

更新

单色回答

如果您确信HTML过滤器足够安全,那么您应该没问题

好吧,我不自信地编写过滤器,但是有一些顶级的过滤器,如PHP Simple HTML DOM Parser,HTML Purifier,htmLawed ......

BBCode由UBB开发并且仍在广泛使用,例如phpBB.

来自UBB/phpBB的开发人员对他们编写完美HTML过滤器的技巧没​​有信心吗?(我猜不会)

另外,就像StackOverflow使用的Markdown一样......如果HTML + Parser完成这项工作,为什么要发明另一种"语言"呢?(除了保存几位......)

Fab*_*ney 5

它的主要优点是防止不需要的代码注入.这就是为什么我会使用像BBCode或Markdown这样的东西.

至少你应该使用允许的HTML标签的白名单而不是黑名单.

  • *每个单独的(正文)标记*都可以附加脚本,例如样式.您还需要一个attr名称的白名单. (3认同)

小智 2

BBCode 消除了 HTML 过滤器可能存在错误的问题,以便评论者可以评论他不应该评论的代码。如果您确信您的 HTML 过滤器足够安全,那么应该没问题。

另一个问题是 HTML 注释可能会破坏您的布局,例如,当评论者输入单个结束语</div>或类似内容时。

  • 不,没有。BBCode 解析器也可能存在允许 XSS 的错误。 (6认同)