Security BB代码与受限HTML
在post提交中允许(仅限白名单)纯标记标记(如a、b、i等)是否存在任何安全风险 BB代码似乎是注入代码和白名单“安全”html标记问题的一个沉重的解决方案,似乎比BB代码所需的所有解析和转换更容易 我发现许多bb代码库在嵌套元素方面存在问题(这是因为它们使用FSA或regex,而不是正确的解析器吗?),并且blockquote或fieldset由web浏览器正确解析Security BB代码与受限HTML,security,Security,在post提交中允许(仅限白名单)纯标记标记(如a、b、i等)是否存在任何安全风险 BB代码似乎是注入代码和白名单“安全”html标记问题的一个沉重的解决方案,似乎比BB代码所需的所有解析和转换更容易 我发现许多bb代码库在嵌套元素方面存在问题(这是因为它们使用FSA或regex,而不是正确的解析器吗?),并且blockquote或fieldset由web浏览器正确解析 非常感谢所有人的意见。这似乎是每个人都会犯的错误,尽管它很简单 使用解析器 不管你是否使用降价、html、bbcode等等 使
非常感谢所有人的意见。这似乎是每个人都会犯的错误,尽管它很简单 使用解析器 不管你是否使用降价、html、bbcode等等 使用解析器。真正的解析器。不是一堆正则表达式 解析器为您提供一个语法树。从syntaxtree派生html(仍然是对象树)。清理树(使用白名单),打印html
使用html作为语法非常好。只是不要试图用正则表达式来清理它。这似乎是每个人都会犯的错误,尽管它很简单 使用解析器 不管你是否使用降价、html、bbcode等等 使用解析器。真正的解析器。不是一堆正则表达式 解析器为您提供一个语法树。从syntaxtree派生html(仍然是对象树)。清理树(使用白名单),打印html
使用html作为语法非常好。只是不要试图用正则表达式来清理它。只要您:
样式
(当然,对于样式
属性,还需要使用真正的CSS解析器),那么这包括对样式
属性中的内容进行解析和白名单最后一点主要是关于获得一致和正确的HTML输出。您的解析器应该注意找出手写HTML中常见的混淆(例如不正确的嵌套标记)。只要您:
样式
(当然,对于样式
属性,还需要使用真正的CSS解析器),那么这包括对样式
属性中的内容进行解析和白名单最后一点主要是关于获得一致和正确的HTML输出。您的解析器应该注意找出手写HTML中常见的混淆(例如不正确的嵌套标记)。在允许css时要特别小心,因为如果您没有正确地将其列入白名单并对其进行解析,在那里执行XSS非常容易。@markijbema:这就是为什么我也要将其列入白名单,当然,使用一个真正的CSS解析器。@Beudled:向前支付,以后再帮助其他人:)在允许CSS时要非常小心,因为如果你没有正确地列出并解析它,在那里做XSS是非常容易的。@markijbema:这就是为什么我说要把它也列为白名单,当然,使用一个真正的CSS解析器。@困惑:向前支付,稍后帮助其他人:)类似于Python中的html.parser或Ruby中的Nokogiri?任何事情都可以,只要在某个时候你可以将其作为对象进行操作,然后根据对象而不是源文件打印html(因此,您的用户无法利用浏览器奇怪的html解析行为)。但nokogiri似乎是可能的,因为有人在它的基础上建立了白名单解析器:。最后一点建议,在一些单元测试中,看看环境卫生是否有效,只是为了确保,其次,当您有违规行为时,您可以将其添加到测试中(虽然这不可能通过阻止的方法实现,但我是分层防御的大力支持者:假设一切都可能失败)类似于Python中的html.parser或Ruby中的Nokogiri?任何事情都可以,只要在某个时候可以将其作为对象进行操作,然后根据对象而不是源文件打印出html(因此,您的用户无法利用浏览器奇怪的html解析行为)。但nokogiri似乎是可能的,因为有人在它的基础上建立了白名单解析器:。最后一点建议,在一些单元测试中,看看环境卫生是否有效,只是为了确保,其次,当您有违规行为时,您可以将其添加到测试中(虽然预防性方法不可能做到这一点,但我大力支持分层防御:假设一切都可能失败)