†ネットゲーム系でちょっとでも人の多いwikiには、RMT業者が広告を、ウィルス配布者がアカウントハックウィルスを含むファイル(主に*.exe)へのURLをバシバシ貼り付けてきます。URLが貼り付け放題のwikiにおいて、閲覧者がおかしなサイトに飛ばないようにwiki管理者側で制限をかけることを実現します。†wikiのmake_linkで、指定されたURLひとつずつについてランキングを行い、ランクに応じてhtmlタグを作成します。ランキング判断情報を追加します。外部サイトマークを定義します。ランキングには以下の4タイプを用意します。内部リンク(inner)サイト内リンクです。認可リンク(approve)管理者が知っている無害なサイトへのリンクです。禁止リンク(forbid)管理者が知っている有害なサイトへのリンクです。未知リンク(unknown)管理者の知らないサイトです。†wiki内のリンクは以下のように表示されます。内部リンクは、(自身に自信がある限り)安全であり、警告などを表示しません。前:http://inner.site/後:http://inner.site/認可リンクは、おそらく安全なので警告はしませんが、外部サイトである旨は表示します。前:http://approve.site/後:http://approve.site/[→]禁止リンクは、その場所に危険なURLが貼られたことを表示し、リンクは表示しません。前:http://forbid.site/後:(この場所に危険なリンクが貼られました。他の部分も信用しないで下さい。)未知のリンクは、外部サイトであることを表示し、危険性が不明である旨を警告します。†pukiwiki1.4.7で実施しています。やることは大きく4箇所です。wikiのmake_linkに、危険度ランキング判断とhtmlタグを作成するfunctionを定義。wikiのmake_linkに、従来は<a>タグを自作していた部分で、上記functionを通して作成するよう振り向け措置。rules.iniに、ランキング判断情報を追加。外部サイトマークを定義。/rules.ini.phpに、以下のようにランキング判断情報を追加。設定はもちろん各自用に変更してください。添付ファイル:うちのページのlink_permission_list.txtこの変数は単純な配列で、その要素は連想配列が入っています。この連想配列の内容は以下の通りです。lank危険度ランクです。inner、approve、forbidのいずれかが入ります。このリストに該当しないものはすべて未知扱いです。正規表現(ただし/exp/のような前後のスラッシュはつけない)です。ひとつずつマッチさせて調べます。noticeメッセージです。禁止リンクが貼られた場合に、リンクを表示せず、それが危険である理由を説明します。noticeがない場合はデフォルトの警告メッセージを表示しますので、必須ではありません。次に、ランキング判断functionを作成します。/lib/make_link.php内のどこかに、以下のfunctionを貼り付けて作成完了です。長いのでテキストファイルで。添付ファイル:うちのページのcheckoutersiteurl.txtそして、<a>タグを自作している部分を、上記functionを通して作成するように変更します。/lib/make_link.php内には3箇所の該当個所があるので、すべて改造します。checkOuterSiteURL('mailto:'.$this->name,$this->alias);}最後に外部マークの定義ですが、cssの編集になります。/skin/pukiwiki.css.phpを開き、以下のように付け加えます。bottom;}そして、outside.png(外向きリンクであることを示す画像)を適切な位置にアップロードすれば準備完了です。「div#body」を付けるのを忘れると、メニューバーにも外部サイトマークがついてしまうので場合によっては不便です。付けておけば、本文部だけにマークがつきます。†ランキング判断情報は、リストの上にあるものほど優先度が高くなります。リストの一番上に「*.exe」を「禁止」にする設定をしておけば、「認可」サイト内にexeがある場合も「禁止」が優先されます。ウィキファームを作るなど、ひとつのサイト内にrules.iniが沢山できてしまうような使い方をしている場合は、ランキング判断情報を/lib/make_link.php内に直接書いておくと設定を共通化できます。改造させていただきました。†こちらの需要でこんなもの考えてみました。突っ込みをお願いします。18:14:36お疲れ様です。20:03:47すいません、よくみたら経緯がぜんぜんなかったですね。BugTrack/730#v827bf64の会話にあった「内部・外部サイトを区別する」について、「外部サイトの危険性を判断する」機能を自分が取り付けたものです。