BBCODE漏洞,插入恶意样式

时间:2013-12-19 20:39:02

标签: javascript jquery html bbcode

我有一个系统可以将BBCODE解析为HTML标记。 但我有一个问题。当我插入颜色时,用户还可以放置其他样式。例如:

[color=green;font-size:100px]green text[/color]
通过这种方式用户可以插入聊天大词,这是不好的。 我的解析系统 - > source

解决方案是什么?

1 个答案:

答案 0 :(得分:0)

要快速修复,您可以替换

'/\[color=(.*?)\](.*?)\[\/color\]/is',

'/\[color=([^;]*?)\](.*?)\[\/color\]/is',

这种方式在包含;的颜色标签上不匹配,但用户在=后面输入的内容仍然在<span> - 标签中。

另一个选项(可能需要更多工作)是只允许某些颜色:

'/\[color=(#\d{6}|green|blue|red|black)\](.*?)\[\/color\]/is',

这将允许十六进制颜色(如#000000)和绿色,蓝色,红色和黑色...您可以自由添加其他颜色。