1 頁 (共 1 頁)

[問題] URL BBCode

發表於 : 2003-12-01 22:15
依夢兒
●架設主機作業系統:Linux RedHat。
●您的上網方式:ADSL Seednet T1/384k。
●您安裝的程式:Apache 1.3.28 + php 4.3.2 + MySql 3.23.56。
●您的 phpBB2 版本:phpBB 2.0.6。


剛剛發現到一個現象,竹貓這邊也是,舉例:

測試下載

如果檔名中間有空白字元,那麼 URL BBCode 就會失效。
這個問題在我的 2.0.6 上也出現了,有什麼方法可以解決嗎??

發表於 : 2003-12-01 22:36

發表於 : 2003-12-01 22:38
可是依夢兒大大...檔案的名稱本來
就不能含有半形空白字元的存在不是嗎?
除了全型空白以外...?
[url=http://tw.yahoo.com ]測試全型空白[/url]

發表於 : 2003-12-01 22:40
剛剛測試可以使用空白命名...@@|| 歹勢...

發表於 : 2003-12-02 00:05
Mac
空白好像要自己加上 %20 的樣子
而且,不留空白應該才是較正確的命名方法,通常都會加上 "_" 或 "-" 在字與字的中間

~Mac

發表於 : 2003-12-02 09:09
[url=http://tw.yahoo.com%20%20]像 這 樣 嗎 ?[/url]
不過我也是到現在才知道可以用空白命名@@~印象中不行說

發表於 : 2003-12-02 17:06
動感超人
文 寫:[url=http://tw.yahoo.com%20%20]像 這 樣 嗎 ?[/url]
不過我也是到現在才知道可以用空白命名@@~印象中不行說
這樣才對
也就是在有空白的部分以 %20 取代空白。

同學您的印象應該是,很多網頁空間都規定:
「檔案名稱無法使用空白命名」吧?
像PChome、Yahoo!奇摩的免費空間,檔案名稱都不能有空白。

但是在我們自己的電腦上就可以喔!

發表於 : 2003-12-02 18:13
依夢兒
Mac 寫:而且,不留空白應該才是較正確的命名方法,通常都會加上 "_" 或 "-" 在字與字的中間
動感超人 寫:這樣才對
也就是在有空白的部分以 %20 取代空白。
是沒錯啦,檔案名稱不留空白才是較正確的命名方法。
問題是別人的網站上面放的檔案喜歡用空白字元,我們要連結的話就只能接受了。
至於將空白字元改為 %20 才能連結,並不是每一位 USER 都知道要這麼作....

而且我發現一件奇怪的事情, 2.0.6 不行,但是 2.0.3 可以??
我在我另一個 2.0.3 的論壇上測試,請看:
http://chage-aska.com/phpbb/viewtopic.php?t=821

我在這一篇文章打的內容就是 測試下載
檔案名稱中間有空白字元,在不修改為 %20 的情況下,這個 URL 語法仍然生效,這才是我感到納悶的....

剛剛比對一下 2.0.3 和 2.0.6 的 bbcode.php ,URL 的部份的確有很多地方不同。
只是有一點想不通,為何 2.0.3 的 URL BBCode 允許檔案名稱有空白字元,
這樣的設計在 2.0.6 卻被拿掉了,是不是有什麼安全上的考量??

這是 2.0.3 的 bbcode.php (和 URL 有關的部份):

代碼: 選擇全部

	// We do URLs in several different ways..
	$bbcode_tpl['url1'] = str_replace('{URL}', '\\\1\\\2', $bbcode_tpl['url']);
	$bbcode_tpl['url1'] = str_replace('{DESCRIPTION}', '\\\1\\\2', $bbcode_tpl['url1']);
	
	$bbcode_tpl['url2'] = str_replace('{URL}', 'http://\\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url2'] = str_replace('{DESCRIPTION}', '\\\1', $bbcode_tpl['url2']);
	
	$bbcode_tpl['url3'] = str_replace('{URL}', '\\\1\\\2', $bbcode_tpl['url']);
	$bbcode_tpl['url3'] = str_replace('{DESCRIPTION}', '\\\\3', $bbcode_tpl['url3']);
	
	$bbcode_tpl['url4'] = str_replace('{URL}', 'http://\\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\\2', $bbcode_tpl['url4']);

	// [url]xxxx://www.phpbb.com[/url] code..
	// 此行修正:可包含中文字的超連結 modification by alang
	$patterns[2] = "#\[url\]([a-z]+?://){1}(.*?)\[/url\]#si";
	$replacements[2] = $bbcode_tpl['url1'];

	// [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
	// 此行修正:可包含中文字的超連結 modification by alang
	$patterns[3] = "#\[url\](.*?)\[/url\]#si";
	$replacements[3] = $bbcode_tpl['url2'];

	// [url=xxxx://www.phpbb.com]phpBB[/url] code..
	// 此行修正:可包含中文字的超連結 modification by alang
	$patterns[4] = "#\[url=([a-z]+?://){1}(.*?)\](.*?)\[/url\]#si";
	$replacements[4] = $bbcode_tpl['url3'];

	// [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
	// 此行修正:可包含中文字的超連結 modification by alang
	$patterns[5] = "#\[url=(.*?)\](.*?)\[/url\]#si";
	$replacements[5] = $bbcode_tpl['url4'];
這是 2.0.6 的 bbcode.php (和 URL 有關的部份):

代碼: 選擇全部

	// We do URLs in several different ways..
	$bbcode_tpl['url1'] = str_replace('{URL}', '\\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url1'] = str_replace('{DESCRIPTION}', '\\\1', $bbcode_tpl['url1']);

	$bbcode_tpl['url2'] = str_replace('{URL}', 'http://\\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url2'] = str_replace('{DESCRIPTION}', '\\\1', $bbcode_tpl['url2']);

	$bbcode_tpl['url3'] = str_replace('{URL}', '\\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url3'] = str_replace('{DESCRIPTION}', '\\\2', $bbcode_tpl['url3']);

	$bbcode_tpl['url4'] = str_replace('{URL}', 'http://\\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url4'] = str_replace('{DESCRIPTION}', '\\\3', $bbcode_tpl['url4']);

	// matches a [url]xxxx://www.phpbb.com[/url] code..
	$patterns[] = "#\[url\]([\w]+?://[^ "

\t<]*?)\[/url\]#is";
	$replacements[] = $bbcode_tpl['url1'];

	// [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
	$patterns[] = "#\[url\]((www|ftp)\.[^ "

\t<]*?)\[/url\]#is";
	$replacements[] = $bbcode_tpl['url2'];

	// [url=xxxx://www.phpbb.com]phpBB[/url] code..
	$patterns[] = "#\[url=([\w]+?://[^ "

\t<]*?)\](.*?)\[/url\]#is";
	$replacements[] = $bbcode_tpl['url3'];

	// [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
	$patterns[] = "#\[url=((www|ftp)\.[^ "

\t<]*?)\](.*?)\[/url\]#is";
	$replacements[] = $bbcode_tpl['url4'];

發表於 : 2003-12-02 18:34
Mac
最好使用 phpBB 2.0.6 的 BBcode 寫法,防止產生安全漏洞
Vulnerability in BBCode - serious

還有,最好別因為要讓會員可以使用有空白的檔名,而修改 BBcode 的抓名代碼

~Mac

發表於 : 2003-12-02 19:44
Mac大~你貼的那個是什麼? 一堆英文看無是什麼功能捏!

發表於 : 2003-12-02 21:16
Mac
就是 URL BBcode 有發現安全漏洞阿\r
所以,別亂改,也確定用最新版的 phpBB 才不會出問題(如果是中小站的話,那就沒啥關係,如果不怕被人駭的話)

~Mac

發表於 : 2003-12-03 00:37
依夢兒
瞭解,那就不理它了....(汗)

發表於 : 2003-12-10 16:35
Xbox