如何停止BB代码操作?

时间:2010-08-10 13:22:57

标签: bbcode

您好我最近发现了一个问题,即使用BB Code输入链接的人可以操作它们。

他们打算输入类似的东西:

[LINK]http://www.domain.com[/LINK]

然而,他们可以输入类似的东西,使链接颜色变为红色:

[LINK]http://www.domain.com 'span style="color:red;"'[/LINK]

这是转换它的代码:

$text = preg_replace("/\\[LINK\\\](.*?)\\[\/LINK\\]/is",
                       "<a href='$1' target='_blank'>$1</a>", $text);

,我忘了,这是另一种类型:

[LINK=http://www.domain.com]example text[/LINK]

$text = preg_replace("/\\[LINK\=(.*?)\\\](.*?)\\[\/LINK\\]/is",
                       "<a href='$1' target='_blank'>$2</a>", $text);

2 个答案:

答案 0 :(得分:0)

不要在url中使用引号等,并在第一遍中删除失败的标记:

$text = preg_replace("/\[LINK\]([^'\"\\s]*?)\[\/LINK\]/is",
                               "<a href='$1' target='_blank'>$1</a>", $text);

$text = preg_replace("/\[LINK\](.*?)\[\/LINK\]/is", "<i>(link removed)</i>", $text);

答案 1 :(得分:0)

这非常危险,特别是如果您的客人足够聪明,可以开始在链接上添加onclick处理程序。

正如mvds所说,取代所有引文和抄袭。消毒输入至关重要。

然而,对于这个特定的URL问题,这不会有任何帮助。然而,有大量的正则表达式URL验证器会从实际的URL中删除任何顽皮的小代码修饰符。