您好我最近发现了一个问题,即使用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);
答案 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中删除任何顽皮的小代码修饰符。