我想將用戶評論中的網址轉化爲鏈接。將網址轉換爲鏈接安全嗎?
我沒有時間測試像HTML Purify這樣的臃腫的反xss庫,所以我不會允許任何html標記。
我只想通過htmlentities()和nl2br()完成所有事情,然後使用preg_replace()來查找URL並將它們變爲鏈接('a'html tags)。
抓住我找到的網址並將它們放入href =''裏面是不安全的嗎?
如果不是,我該怎麼辦呢?
我想將用戶評論中的網址轉化爲鏈接。將網址轉換爲鏈接安全嗎?
我沒有時間測試像HTML Purify這樣的臃腫的反xss庫,所以我不會允許任何html標記。
我只想通過htmlentities()和nl2br()完成所有事情,然後使用preg_replace()來查找URL並將它們變爲鏈接('a'html tags)。
抓住我找到的網址並將它們放入href =''裏面是不安全的嗎?
如果不是,我該怎麼辦呢?
是的,它應該是安全的。如果你想知道如何,這裏是我使用這個功能(我簡化它爲這篇文章的目的):
function formatPost($string) {
return nl2br(
preg_replace_callback(
'~https?://([^/\s]+)(?:/((?>[/\w]+|\S(?!\s|$))*))?~',
function($matches) {
$url = $matches[0];
$host = $matches[1];
$path = isset($matches[2]) ? $matches[2] : '';
$follow = false;
if ('' == $path) {
$text = $host;
} elseif ($_SERVER['HTTP_HOST'] == $host) {
$text = $path;
$follow = true;
} else {
$text = $host . '/' . $path;
}
return '<a href="' . $url . '"' . (!$follow ? ' rel="nofollow"' : '') . '>' . $text . '</a>';
},
htmlspecialchars($string)
)
);
}
這取決於你的意思是通過網址和安全。 – Gumbo 2011-03-19 09:22:14
「我沒有時間去測試像HTML Purify這樣的臃腫的反xss庫」。希望你使用的任何庫都已經過測試,所以你可以簡單地使用它們。爲什麼要重複努力並測試別人的代碼? – 2011-03-19 09:22:40
你可以這樣做。大多數博客都這樣做。即使這樣做 – JohnP 2011-03-19 09:22:57