BB代码与受限制的HTML

时间:2011-07-15 22:20:37

标签: security

在提交帖子时允许(仅白名单)纯标记标记(例如a,b,i等)是否存在安全隐患?

BB代码似乎是解决注入代码问题的重要解决方案,并且将“安全”html标签列入白名单似乎更容易通过bb代码所需的所有解析和转换。

我发现许多bb代码库存在嵌套元素的问题(这是因为它们使用的是FSA或正则表达式而不是正确的解析器吗?)并且网页浏览器正确解析了blockquote或fieldset。

非常感谢任何和所有意见。

2 个答案:

答案 0 :(得分:3)

这是每个人似乎都错了,虽然它很简单。

使用解析器

使用markdown,html,bbcode等无所谓。

使用解析器。真正的解析器。不是一堆正则表达式。

解析器为您提供了一个syntaxtree。从syntaxtree中你可以得到html(仍然是一个对象树)。清理树(使用白名单),打印html。

使用html作为语法非常好。只是不要试图用正则表达式来清理它。

答案 1 :(得分:2)

只要你使用HTML就没有错:

  1. 使用适当的HTML解析器来处理输入。
  2. 将代码列入白名单,以便只有您想要的内容通过。
  3. 将标签上的属性列入白名单。如果您想允许style(当然,为style属性使用真正的CSS解析器),这包括解析style属性中的内容并将其列入白名单。
  4. 在解析HTML时重写HTML。
  5. 最后一点主要是关于获得一致和正确的HTML输出。您的解析器应该注意找出您手工编写的HTML中常见的混淆(例如嵌套错误的标记)。