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

标签 html security validation bbcode

我正在用 PHP 编写评论解析函数。

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

我相信它的工作和输出与 BBCode 完全相同。

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

更新

单色回答

If you're confident that your HTML filter is safe enough, you should be fine though

好吧,我对自己编写过滤器没有信心,但是有一些顶级过滤器,如 PHP Simple HTML DOM Parser、HTML Purifier、htmLawed...

BBCode 由 UBB 开发,目前仍在广泛使用,例如 phpBB。

UBB/phpBB 的开发人员是否对自己编写完美的 HTML 过滤器的技能没有信心? (我猜不是)

此外,就像 StackOverflow 使用的 Markdown 一样……如果 HTML+Parser 可以完成这项工作,为什么还要发明另一种“语言”? (除了节省一些位...)

最佳答案

它的主要优点是防止不需要的代码注入(inject)。这就是为什么我会使用 BBCode 或 Markdown 之类的东西。

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

关于html - 为什么我应该在评论表单中使用 BBCode 而不是 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7268023/

相关文章:

validation - 在不覆盖核心 js 文件的情况下扩展 Magento 2 rules.js?

javascript - 跳点动画

security - 是否有支持或反对频繁更改密码的研究?

ios - 从 iOS 中的 kSecAttrApplicationTag 中提取模数

ruby-on-rails - 条件验证 - 必须存在 2 个字段之一

validation - 具有过滤数据范围的数据验证下拉列表

html - 编写 XHTML Strict 标记值得吗?

html - 无法单击复选框 - 自定义 Css

html - 使用内联 block 属性时文本转到下一行

ruby-on-rails - Ruby gem 是否有像木马一样运行的风险?