*URL にブラケットを使ってもいいように。 [#i3429528] -ページ: [[BugTrack2]] -投稿者: [[kak]] -優先順位: 低 -状態: 提案 -カテゴリー: 本体新機能 -投稿日: 2005-02-15 (火) 18:14:34 -バージョン: **メッセージ [#yadd2e32] 例えば [[http://www.google.com]] という記法もあり。としたほうが都合がよいかと思います。 [[Google>http://www.google.com]] のように記述した場合は http は InterWikiName とならないのに(http という InterWikiName があっても無視する)、 [[http://www.google.com]] と記述した場合は InterWikiName になるというのが矛盾しているように感じました。 ---- -こんな感じでしょうか? -- [[teanan]] &new{2005-02-15 (火) 19:01:00}; -- &ref(./make_link.php.bracket_url.diff.1); --あう、バグありました ;( -- [[teanan]] &new{2005-02-15 (火) 19:07:00}; --再掲載。 -- [[teanan]] &new{2005-02-15 (火) 19:14:08}; -これはInterWikiの内部的なデフォルト値として http (raw) などがあると良い、という話ではないでせうか -- [[henoheno]] &new{2005-02-15 (火) 22:05:37}; --なるほど、そういうアプローチがありますね。上のはURLsの方に寄せたのですが、InterWikiにした方が簡単にできました。 -- [[teanan]] &new{2005-02-16 (水) 02:22:43}; lib/make_link.php : 773行目付近 } + $interwikinames['http'] = array('http:', 'raw'); + $interwikinames['https'] = array('https:', 'raw'); if (! isset($interwikinames[$name])) return FALSE; --けど、全角文字が指定された場合でもリンクになってしまう気がする・・・ -- [[teanan]] &new{2005-02-16 (水) 02:27:25}; -- つまり、(現行はPukiWiki個別のエンコーディングに左右されますが)日本語交じりの異常なURLとか、国際化ドメイン名を表現できるということですか :) -- [[henoheno]] &new{2005-02-16 (水) 22:23:52}; -- まてよ、それを悪用できるXSS脆弱性がないか? 頭が回らないので代わりにメモメモ。 -- [[henoheno]] &new{2005-02-16 (水) 23:51:59}; -- こんな感じにすると逃げられますね。 -- [[teanan]] &new{2005-02-17 (木) 02:36:19}; + $interwikinames['http'] = array('http:', 'url'); + $interwikinames['https'] = array('https:', 'url'); if (! isset($interwikinames[$name])) return FALSE; list($url, $opt) = $interwikinames[$name]; // Encoding switch ($opt) { + case 'url': + if (!preg_match('/(?:\/\/|\.\.?\/)[!~*\'();\/?:\@&=+\$,%#\w.-]*$/',$param)) { + return FALSE; // Invalid URL + } + break; #comment