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 に答える