在提交帖子时允许(仅白名单)纯标记标记(例如a,b,i等)是否存在安全隐患?
BB代码似乎是解决注入代码问题的重要解决方案,并且将“安全”html标签列入白名单似乎更容易通过bb代码所需的所有解析和转换。我发现许多bb代码库存在嵌套元素的问题(这是因为它们使用的是FSA或正则表达式而不是正确的解析器吗?)并且网页浏览器正确解析了blockquote或fieldset。
非常感谢任何和所有意见。
答案 0 :(得分:3)
这是每个人似乎都错了,虽然它很简单。
使用解析器
使用markdown,html,bbcode等无所谓。
使用解析器。真正的解析器。不是一堆正则表达式。
解析器为您提供了一个syntaxtree。从syntaxtree中你可以得到html(仍然是一个对象树)。清理树(使用白名单),打印html。
使用html作为语法非常好。只是不要试图用正则表达式来清理它。
答案 1 :(得分:2)
只要你使用HTML就没有错:
style
(当然,为style
属性使用真正的CSS解析器),这包括解析style
属性中的内容并将其列入白名单。最后一点主要是关于获得一致和正确的HTML输出。您的解析器应该注意找出您手工编写的HTML中常见的混淆(例如嵌套错误的标记)。