0

嗨,我最近发现了一个问题,即使用 BB 代码输入链接的人能够操纵它们。

它们旨在输入以下内容:

[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);
4

2 回答 2

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);
于 2010-08-10T13:27:50.397 回答
0

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

正如 mvds 所说,替换所有引号和撇号。消毒输入是必不可少的。

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

于 2010-08-10T13:31:02.097 回答