ベースシステム Edit

  • Pukiwiki Plus! 1.4.6-plus-u2-eucjp

導入プラグイン Edit

rssdiff.inc.php Edit

http://pctraining.s21.xrea.com/download/rssdiff.inc_php.txt

RSSの出力内容を、現在との差分を本文に入れて出力してくれるプラグイン。
スキンを修正して、標準でこのプラグインの出力がRSSとして扱われるようにする。

mail.in.php Edit

http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fmail.inc.php

メールフォーム用。
凍結したページからでないと利用できないように制限が掛っているため、実質管理者権限のある人でないと運用できないようになっている。

recentcomment.inc.php Edit

pcommentで、最近投稿されたコメントを任意の位置に表示するためのプラグイン

div.inc.php Edit

任意のDIV指定を書けるようにするプラグイン
CSSの指定とともに利用することで、トップページのように、本文を2カラムにしたいページで利用。
一部うまく利用できなかったため、修正してある。
CSSは base_3float.css にて

div#content_right{
        float:right;
        width:48%;
}
div#content_left{
        float:left;
        width:48%;
}

と指定してwrap_content内でさらに左右分割するように指定してあり

#div(start, id, content_left)
【左側カラム内容】
#div(end)
#div(start, id, content_right)
【右側カラム内容】
#div(end)

のようにして利用する。

プラグインの修正 Edit

article.inc.php Edit

filearticle.inc.php.patch

line_break=1の場合の修正 Edit

改行指定が必要ない設定でも改行文字が入ってしまい、無駄に空行が入ってしまうため、$line_break = 1のときに改行を入れないように修正。

スパム投稿への対応 Edit

この機能はspam_filter.phpに統合したため、そちらで一括して管理したほうが便利です。

投稿内容に、指定の正規表現が含まれていた場合に拒否する設定を追加。具体的には例えば</a>や[/url]が含まれている場合に拒否することで、スパム投稿を拒否することができるようになる。

設定はpukiwiki.ini.phpで下記のパラメータで禁止正規表現を指定する。

define('PLUGIN_ARTICLE_NGREG',  '/<\/a>|\[\/url\]/i'); 

comment.inc.php Edit

filecomment.inc.php.patch

コメント入力欄行数の指定 Edit

コメント入力欄行数を増やすため、入力欄の行数指定ができるようにして、2行以上の場合はTEXTAREAを利用するように修正。
また、文中の改行を削除してしまうようになっていたため、最後の改行や空行だけ削除するようにし、文中の空行は改行命令に置き換えるように修正。

設定はpukiwiki.ini.phpで下記のパラメータで行数を指定する。

define('PLUGIN_COMMENT_ROWS_MSG',    2);

スパム投稿への対応 Edit

この機能はspam_filter.phpに統合したため、そちらで一括して管理したほうが便利です。

投稿内容に、指定の正規表現が含まれていた場合に拒否する設定を追加。具体的には例えば</a>や[/url]が含まれている場合に拒否することで、スパム投稿を拒否することができるようになる。

設定はpukiwiki.ini.phpで下記のパラメータで禁止正規表現を指定する。

define('PLUGIN_COMMENT_NGREG',  '/<\/a>|\[\/url\]/i'); 

pcomment.inc.php Edit

filepcomment.inc.php.patch

コメント入力欄行数の指定 Edit

コメント入力欄行数を増やすため、入力欄の行数指定ができるようにして、2行以上の場合はTEXTAREAを利用するように修正。

設定はpukiwiki.ini.phpで下記のパラメータで行数を指定する。

define('PLUGIN_PCOMMENT_ROWS_MSG',   2);

スパム投稿への対応 Edit

この機能はspam_filter.phpに統合したため、そちらで一括して管理したほうが便利です。

投稿内容に、指定の正規表現が含まれていた場合に拒否する設定を追加。具体的には例えば</a>や[/url]が含まれている場合に拒否することで、スパム投稿を拒否することができるようになる。

設定はpukiwiki.ini.phpで下記のパラメータで禁止正規表現を指定する。

define('PLUGIN_PCOMMENT_NGREG',  '/<\/a>|\[\/url\]/i'); 

rss.inc.php Edit

デフォルトのRSSバージョン指定をできるようにして、たとえばデフォルトをRSS1.0にすることで、IE7のRSSアイコンが機能するように修正。

filerss.inc.php.patch

設定はpukiwiki.ini.phpで下記のパラメータでデフォルトのバージョンを指定する。

define('PLUGIN_RSS_VERSION_DEFAULT', '1.0');

attach.inc.php Edit

この機能はspam_filter.phpに統合したため、そちらで一括して管理したほうが便利です。

ファイル名が正規表現にマッチしたらアップロードを許可しないように修正。

fileattach.inc.php.patch
fileja.lng.php.attach.patch
fileen.lng.php.attach.patch

設定はpukiwiki.ini.phpで下記のパラメータで添付を許可しないファイル名を正規表現で指定する。

define('PLUGIN_ATTACH_UPLOAD_FILEREG', '/\.html$|\.htm$/');

init.php/file.php Edit

スパム投稿の情報を簡単に参照できるようにするため、diffで表示した差分の最後に、編集者のIPやUSER AGENT情報などを表示するように修正。

lib/init.php へのパッチ fileinit.php.patch
lib/file.php へのパッチ filefile.php.patch

spam_filter.php Edit

akismet組み込み用の追加を参考に、複数のスパムフィルタを利用できる汎用のフィルタ(のベースになるもの)を作成。

lib/spam_filter filespam_filter.php (0.7.5 NSやCountry系フィルタのキャッシュによる高速化)
lib/plugin.php へのパッチ fileplugin.php.patch (spam_filter 0.7.0以降用)

正規表現によるHTTP_USER_AGENTでのフィルタを利用するためには下記パッチも必要です。

lib/init.php へのパッチ fileinit.php.patch

もしくは、PukiWiki Plus! 1.4.6と1.4.7用および本家のPukiWiki 1.4.7用に、パッチ済みのファイルを準備しましたのでそちらを利用してください。
こちらには下で説明している、akismet.class.phpとrecaptchalib.php、delegated-apnic-latest、PEARのNet_DNSクラスも同梱しましたので、展開したファイルをすべてPukiWikiのルートディレクトリに上書きし、NSのキャッシュ用ファイルdns_get_ns.cacheを書き込み可能(ファイル属性を777)にすることで、そのまま使えるようになります。

urlnsblなどのNSを引くフィルタを導入する場合で、PHP4などのようにdns_get_recordが引けない場合は、PEARのNet_DNSクラスを導入するか、nslookupコマンドを引けるよう環境にしておく必要があります。
また、NS名を引いたキャッシュを保存している「dns_get_ns.cache」という空のファイルを、PukiWikiのトップディレクトリ(pukiwiki.ini.phpがあるディレクトリ)に置いて書き込み可能(ファイル属性を777)にしておいてください。

ipcountryフィルタを導入する場合は
ftp://ftp.apnic.net/pub/apnic/stats/apnic/delegated-apnic-latest
「delegated-apnic-latest」のファイルをPukiWikiのトップディレクトリ(pukiwiki.ini.phpがあるディレクトリ)におく必要があります。
【うざい国からのアクセスを全て遮断】
http://www.42ch.net/~shutoff/
からも同ファイルをダウンロードできます。

reCAPTCHAを利用するためには、PHP Library for reCAPTCHAから、「recaptchalib.php」をダウンロードして、libにおく必要があります。
そして、reCAPTCHA Admin: Loginから暗号化キーを取得する必要があります。
これらはすべてフリーになっています。

また、Akismetのフィルタを利用するためには
PukiWiki/Akismetによるspam(スパム)防止機能 - ARK-Web SandBox Wiki】
http://www.ark-web.jp/sandbox/wiki/190.html
を参照の上、「akismet.class.php」を導入する必要があります。

pukiwiki.ini.phpで、利用するフィルタ種を

define('SPAM_FILTER_COND', '#useragent() or #filename() or #atag() or #ngreg or (#onlyeng() and #urlnum()) or #urlbl() or #urlnsbl()');

のように指定します。
条件の否定、例えばUSER_AGENTの内容に「Mozilla」が含まれて「いない」場合と表現したいときは

! #useragent('/Mozilla/') 

という表記で表すことが出来ます。
また、各フィルタをどのプラグインに掛けるかを

define('SPAM_FILTER_NGREG_PLUGIN_NAME', 'edit,comment,pcomment,article');

のようにカンマで区切って指定出来ます。
そして、各フィルタ毎の設定についても

define('SPAM_FILTER_NGREG_REG', '/(@mail\.ru|botmetkatres)/i');

のように指定出来ます。
この例では正規表現によるNGワード「@mail.ru」「botmetkatres」のフィルタ(ngreg)を編集(edit),commentなどの書き込みに対して掛けるよう指定しています。
これらの指定は、関数の引数で個々の条件ごとに渡してやることも出来ます。
個々のフィルタの設定がデフォルトである程度書いてあるため、SPAM_FILTER_CONDで下記制限を選択するだけで、使えるようになります。

また、完全に拒否してしまうのではなく、怪しいと思われる場合にはCAPTCHA(歪んだ文字列を入力させてロボットからの入力を拒否する)を使って確認することができます。

define('SPAM_FILTER_RECAPTCHA_PUBLICKEY',  '【公開鍵のテキスト】');
define('SPAM_FILTER_RECAPTCHA_PRIVATEKEY', '【秘密鍵のテキスト】');
define('SPAM_FILTER_CAPTCHA_COND', '#url and (#ipcountry() or #ipdnsbl())');

上から2行でreCAPTCHA Admin: Loginから取得した暗号化キーを設定します。
下の1行では、どの条件にマッチした場合にCAPTCHAでのチェックを掛けるのかを指定します。
この例では、URLが書いてある場合で、中国や韓国からもしくは公開ブラックリストに登録されているIPの場合、CAPTCHAによるチェックがかかるようになります。
CAPTCHAには現在のところ、reCAPTCHAのみ利用出来ます。

SPAM_FILTER_CONDでは「完全に黒」と言い切れる条件や、ボットではなく人が書いてくるためCAPTCHAを抜けてくるようなスパムの条件(urlblやuseragent、filenameなど)を書いておき、SPAM_FILTER_CAPTCHA_CONDではこれだけではスパムとは言い切れないようなものや、誤検出があったときに簡単に救済できるようにしたい場合の条件(urlnumやipcountryなど)を書いておくと良いでしょう。

また、誤検出や書き込み速度の低下、負荷やの低減のため、URLのホワイトリストを設定しておくと良いでしょう。
例えば、ここの「miasa.info」とGoogleのURLは疑わないとするなら

define('SPAM_FILTER_WHITEREG', '/(miasas\.info|google\.(com|co\.jp))/i');

のように設定します。

現時点では以下の制限を利用できます

  • ngreg
    正規表現のNGワードで編集内容に対するフィルタ
  • url
    内容にURLっぽいものが含まれているかチェック
  • atag
    内容に</a>や[/url]のようなアンカータグが含まれているかチェック
  • onlyeng
    内容が半角英数のみ(日本語が入っていない)かチェック
  • urlnum
    内容に含まれているURLが何個以上かチェック
  • ipunknown
    クライアントのIPが逆引きできるかチェック
  • ips25r
    クライアントのIPが動的IPっぽい(S25Rにマッチする)かチェック
    書き込みは普通動的IPからなので、トラックバックスパムの判定に使う。
  • ipbl
    クライアントのIPかホスト名がブラックリストに入っているか確認
  • ipdnsbl
    クライアントのIPをDNSBL(公開ブラックリスト)でチェック
  • ipcountry
    クライアントのIPの国がどこかをチェック
  • uaunknown
    HTTP_USER_AGENTが既知(pukiwiki.ini.phpで$agentsで指定)かチェック
  • useragent
    正規表現によるHTTP_USER_AGENTでのフィルタ
  • filename
    正規表現による添付ファイル名でのフィルタ
  • formname
    form中に存在しないはずの項目(urlやemailなど)があるかチェック
  • urlbl
    URLがブラックリストに入っているか確認
    ただ、ここで標準で入れているURLのブラックリストよりも、本家のスパムフィルタのURLリストのほうが非常によく網羅されているので、そちらのほうが強力です。
  • urlcountry
    URLのサーバのある国がどこかをチェック
  • urldnsbl
    URLがDNSBLに入っているか確認
  • urlnsbl
    URLのNS(ネームサーバ:ドメインの名前を管理しているサーバ)がブラックリストに入っているか確認
    NSでブラックリストにしてあるため、ブラックリスト入りしている同じ業者が新しいドメインを取得しても、NSを変更しない限り防げるため、本家のURLブラックリストを使っている場合でも有効です。
  • urlnscountry
    URLのNSの国がどこかをチェック
  • akismet
    Akismetを利用したフィルタ

実際の設定例については、
いくつかのスパムフィルタを使えるspam_filter.phpの導入
PukiWiki Plus!用のスパムフィルタ spam_filter.php
などを参照ください。

また、こちらのページでも、akismetでのチェックに引っかかった場合だけ、reCAPCHAのチェックを掛ける、というこのフィルタの一部利用方法と同じ事が出来るフィルタを書かれています。
誤検出の少ないスパムフィルタを探されている方は、こちらもチェックしてみると良いでしょう。

Plugin/akismet.inc.php - SONOTS Plugin
http://lsx.sourceforge.jp/?Plugin%2Fakismet.inc.php

現在、URLが抜け落ちてしまっている

  • c33t [a] [/a] -- ma113zda? 2007-10-30 (火) 03:01:09

のようなスパムが抜けてきてしまっているため、対策設定を入れる予定。

spam_filter についての質問はこちらへ。


  • c209t [a] [/a] -- ma1zda? 2007-11-02 (金) 00:21:25
  • c380t [a] [/a] -- ma299zda? 2007-11-02 (金) 00:21:35
  • c216t -- ma709zda? 2007-11-02 (金) 00:21:41
  • c296t [a] [/a] -- ma701zda? 2007-11-02 (金) 00:23:09
  • c866t [a] [/a] -- ma826zda? 2007-11-02 (金) 00:34:27
  • c59t -- ma13zda? 2007-11-02 (金) 00:34:50
  • c66t -- ma232zda? 2007-11-02 (金) 00:47:21
  • c618t [a] [/a] -- ma290zda? 2007-11-02 (金) 00:58:01
  • c125t [a] [/a] -- ma860zda? 2007-11-02 (金) 00:58:38
  • c961t -- ma356zda? 2007-11-02 (金) 01:11:16
  • c535t -- ma324zda? 2007-11-02 (金) 01:11:26
  • c887t [a] [/a] -- ma289zda? 2007-11-02 (金) 01:14:21
  • c280t [a] [/a] -- ma965zda? 2007-11-02 (金) 01:15:50
  • c927t [a] [/a] -- ma354zda? 2007-11-02 (金) 01:22:26
  • c102t [a] [/a] -- ma969zda? 2007-11-02 (金) 01:23:25
  • c387t -- ma710zda? 2007-11-02 (金) 01:34:40
  • c85t -- ma300zda? 2007-11-02 (金) 01:36:31
  • c637t -- ma335zda? 2007-11-02 (金) 01:49:22
  • c138t -- ma625zda? 2007-11-02 (金) 02:02:38
  • c221t [a] [/a] -- ma913zda? 2007-11-02 (金) 02:05:21
  • c494t [a] [/a] -- ma689zda? 2007-11-02 (金) 02:07:24
  • c517t -- ma827zda? 2007-11-02 (金) 02:14:26
  • c88t [a] [/a] -- ma315zda? 2007-11-02 (金) 02:15:39
  • c604t -- ma742zda? 2007-11-02 (金) 02:27:15
  • c18t [a] [/a] -- ma223zda? 2007-11-02 (金) 02:27:43
  • c115t [a] [/a] -- ma350zda? 2007-11-02 (金) 02:39:09
  • c33t [a] [/a] -- ma215zda? 2007-11-02 (金) 02:40:07
  • c247t [a] [/a] -- ma640zda? 2007-11-02 (金) 02:52:06
  • c662t -- ma615zda? 2007-11-02 (金) 02:52:46
  • c674t [a] [/a] -- ma931zda? 2007-11-02 (金) 02:56:53
  • c908t [a] [/a] -- ma662zda? 2007-11-02 (金) 02:58:28
  • c26t -- ma115zda? 2007-11-02 (金) 03:03:01
  • c758t -- ma249zda? 2007-11-02 (金) 03:05:04
  • c75t [a] [/a] -- ma186zda? 2007-11-02 (金) 03:15:00
  • c571t [a] [/a] -- ma966zda? 2007-11-02 (金) 03:16:11
  • c653t -- ma949zda? 2007-11-02 (金) 03:28:48
  • c674t [a] [/a] -- ma931zda? 2007-11-02 (金) 03:47:59
  • c518t [a] [/a] -- ma275zda? 2007-11-02 (金) 03:49:10
  • c557t [a] [/a] -- ma649zda? 2007-11-02 (金) 16:17:37
  • c421t -- ma131zda? 2007-11-02 (金) 16:19:25
  • c426t -- ma195zda? 2007-11-02 (金) 16:30:17
  • c843t [a] [/a] -- ma587zda? 2007-11-02 (金) 16:30:29
  • c106t [a] [/a] -- ma108zda? 2007-11-02 (金) 16:42:06
  • c126t [a] [/a] -- ma411zda? 2007-11-02 (金) 16:42:46
  • c597t -- ma31zda? 2007-11-02 (金) 16:53:29
  • c987t -- ma729zda? 2007-11-02 (金) 16:55:17
  • c712t [a] [/a] -- ma302zda? 2007-11-02 (金) 17:05:55
  • c555t -- ma610zda? 2007-11-02 (金) 17:07:19
  • c917t -- ma312zda? 2007-11-02 (金) 17:17:59
  • c379t -- ma30zda? 2007-11-02 (金) 17:19:13
  • c267t [a] [/a] -- ma630zda? 2007-11-02 (金) 17:31:48
  • c175t -- ma526zda? 2007-11-02 (金) 17:31:54
  • c445t [a] [/a] -- ma584zda? 2007-11-02 (金) 17:44:59
  • c554t -- ma340zda? 2007-11-02 (金) 17:45:05
  • c137t -- ma161zda? 2007-11-02 (金) 17:57:42
  • c533t [a] [/a] -- ma374zda? 2007-11-02 (金) 17:58:15
  • c389t [a] [/a] -- ma358zda? 2007-11-02 (金) 18:10:35
  • c130t [a] [/a] -- ma661zda? 2007-11-02 (金) 18:11:54
  • c913t -- ma77zda? 2007-11-02 (金) 18:23:32
  • c756t -- ma843zda? 2007-11-02 (金) 18:25:09
  • c260t [a] [/a] -- ma415zda? 2007-11-02 (金) 18:35:37
  • c977t [a] [/a] -- ma563zda? 2007-11-02 (金) 18:36:59
  • c130t [a] [/a] -- ma661zda? 2007-11-02 (金) 18:47:52
  • c752t -- ma330zda? 2007-11-02 (金) 18:50:26
  • c895t -- ma417zda? 2007-11-02 (金) 19:00:08
  • c241t [a] [/a] -- ma783zda? 2007-11-02 (金) 19:01:31
  • c233t [a] [/a] -- ma446zda? 2007-11-02 (金) 19:13:19
  • c170t -- ma698zda? 2007-11-02 (金) 19:14:31
  • c118t [a] [/a] -- ma37zda? 2007-11-02 (金) 19:25:31
  • c549t -- ma179zda? 2007-11-02 (金) 19:27:23
  • c922t -- ma17zda? 2007-11-02 (金) 19:39:34
  • c199t -- ma881zda? 2007-11-02 (金) 19:54:15
  • c445t -- ma574zda? 2007-11-02 (金) 20:07:48
  • c226t [a] [/a] -- ma804zda? 2007-11-02 (金) 20:07:52
  • c273t -- ma251zda? 2007-11-02 (金) 20:19:57
  • c919t [a] [/a] -- ma242zda? 2007-11-02 (金) 20:20:46
  • c446t [a] [/a] -- ma305zda? 2007-11-02 (金) 20:32:09
  • c123t -- ma746zda? 2007-11-02 (金) 20:32:35
  • c118t [a] [/a] -- ma909zda? 2007-11-02 (金) 20:44:23
  • c625t [a] [/a] -- ma556zda? 2007-11-02 (金) 20:44:46
  • c273t -- ma251zda? 2007-11-02 (金) 20:56:50
  • c643t [a] [/a] -- ma873zda? 2007-11-02 (金) 20:57:11
  • c888t [a] [/a] -- ma254zda? 2007-11-02 (金) 21:10:03
  • c662t -- ma317zda? 2007-11-02 (金) 21:10:44
  • c125t -- ma510zda? 2007-11-02 (金) 21:23:26
  • c623t -- ma684zda? 2007-11-02 (金) 21:23:39
  • c98t -- ma585zda? 2007-11-02 (金) 21:36:39
  • c269t -- ma457zda? 2007-11-02 (金) 21:36:46
  • c26t [a] [/a] -- ma688zda? 2007-11-02 (金) 21:49:04
  • c48t [a] [/a] -- ma860zda? 2007-11-02 (金) 21:49:07
  • c269t -- ma457zda? 2007-11-02 (金) 21:50:22
  • c941t -- ma951zda? 2007-11-02 (金) 22:03:42
  • c833t -- ma482zda? 2007-11-02 (金) 22:03:49
  • c964t [a] [/a] -- ma574zda? 2007-11-02 (金) 22:16:53
  • c939t -- ma702zda? 2007-11-02 (金) 22:17:37
  • c824t [a] [/a] -- ma147zda? 2007-11-02 (金) 22:29:59
  • c156t [a] [/a] -- ma997zda? 2007-11-02 (金) 22:30:27
  • c702t -- ma344zda? 2007-11-02 (金) 22:44:41
  • c457t -- ma694zda? 2007-11-02 (金) 22:44:46
  • c501t -- ma873zda? 2007-11-02 (金) 22:56:47
  • c666t -- ma572zda? 2007-11-02 (金) 22:58:15
  • c618t -- ma769zda? 2007-11-02 (金) 23:10:16
  • c576t -- ma500zda? 2007-11-02 (金) 23:10:42
  • c464t [a] [/a] -- ma76zda? 2007-11-02 (金) 23:40:02
  • c458t -- ma788zda? 2007-11-02 (金) 23:40:30
  • c66t [a] [/a] -- ma531zda? 2007-11-02 (金) 23:52:34
  • c793t -- ma312zda? 2007-11-02 (金) 23:53:43
  • c247t [a] [/a] -- ma884zda? 2007-11-03 (土) 00:06:18
  • c294t -- ma492zda? 2007-11-03 (土) 00:07:02
  • c349t -- ma149zda? 2007-11-03 (土) 00:19:29
  • c704t [a] [/a] -- ma448zda? 2007-11-03 (土) 00:19:58
  • c666t [a] [/a] -- ma235zda? 2007-11-03 (土) 00:32:14
  • c817t [a] [/a] -- ma244zda? 2007-11-03 (土) 00:32:17
  • c422t [a] [/a] -- ma636zda? 2007-11-03 (土) 00:44:34
  • c294t -- ma492zda? 2007-11-03 (土) 00:45:16
  • c70t -- ma268zda? 2007-11-03 (土) 00:45:46
  • c557t [a] [/a] -- ma843zda? 2007-11-03 (土) 00:56:43
  • c60t -- ma792zda? 2007-11-03 (土) 00:57:31
  • c852t [a] [/a] -- ma584zda? 2007-11-03 (土) 01:08:53
  • c80t -- ma500zda? 2007-11-03 (土) 01:10:11
  • c268t [a] [/a] -- ma821zda? 2007-11-03 (土) 01:21:29
  • c76t -- ma142zda? 2007-11-03 (土) 01:22:33
  • c959t -- ma514zda? 2007-11-03 (土) 01:34:20
  • c516t -- ma635zda? 2007-11-03 (土) 01:35:43
  • c116t [a] [/a] -- ma959zda? 2007-11-03 (土) 01:47:25
  • c115t -- ma609zda? 2007-11-03 (土) 01:48:53
  • c891t [a] [/a] -- ma470zda? 2007-11-03 (土) 02:01:08
  • c115t -- ma998zda? 2007-11-03 (土) 02:02:02
  • c658t [a] [/a] -- ma535zda? 2007-11-03 (土) 02:09:39
  • c287t [a] [/a] -- ma258zda? 2007-11-03 (土) 02:11:10
  • c267t -- ma494zda? 2007-11-03 (土) 02:14:32
  • c482t -- ma11zda? 2007-11-03 (土) 02:15:21
  • c490t [a] [/a] -- ma612zda? 2007-11-03 (土) 02:27:24
  • c942t -- ma783zda? 2007-11-03 (土) 02:28:06
  • c349t -- ma814zda? 2007-11-03 (土) 02:39:15
  • c171t [a] [/a] -- ma394zda? 2007-11-03 (土) 02:39:42
  • c374t [a] [/a] -- ma609zda? 2007-11-03 (土) 02:52:16
  • c278t -- ma363zda? 2007-11-03 (土) 02:52:20
  • c256t [a] [/a] -- ma190zda? 2007-11-03 (土) 03:00:53
  • c322t [a] [/a] -- ma465zda? 2007-11-03 (土) 03:01:54
  • c858t -- ma695zda? 2007-11-03 (土) 03:03:36
  • c767t -- ma593zda? 2007-11-03 (土) 03:04:52
  • c749t [a] [/a] -- ma452zda? 2007-11-03 (土) 03:16:22
  • c283t [a] [/a] -- ma380zda? 2007-11-03 (土) 03:16:31
  • c258t -- ma601zda? 2007-11-03 (土) 03:29:25
  • c586t -- ma412zda? 2007-11-03 (土) 03:29:26
  • c233t -- ma806zda? 2007-11-03 (土) 03:41:06
  • c213t -- ma222zda? 2007-11-03 (土) 03:41:21
  • c132t [a] [/a] -- ma228zda? 2007-11-03 (土) 03:51:37
  • c957t [a] [/a] -- ma822zda? 2007-11-03 (土) 03:52:17
  • c446t [a] [/a] -- ma256zda? 2007-11-03 (土) 03:53:23
  • c969t [a] [/a] -- ma430zda? 2007-11-03 (土) 03:53:42
  • c618t [a] [/a] -- ma19zda? 2007-11-03 (土) 04:06:46
  • c9t -- ma86zda? 2007-11-03 (土) 04:07:24
  • c811t [a] [/a] -- ma995zda? 2007-11-03 (土) 04:19:33
  • c211t [a] [/a] -- ma332zda? 2007-11-03 (土) 04:19:40
  • c233t -- ma806zda? 2007-11-03 (土) 04:31:08
  • c595t -- ma328zda? 2007-11-03 (土) 04:31:37
  • c692t [a] [/a] -- ma199zda? 2007-11-03 (土) 04:41:16
  • c400t [a] [/a] -- ma940zda? 2007-11-03 (土) 04:42:16
  • c76t [a] [/a] -- ma424zda? 2007-11-03 (土) 04:43:25
  • c887t [a] [/a] -- ma20zda? 2007-11-03 (土) 04:44:04
  • c26t -- ma375zda? 2007-11-03 (土) 04:56:16
  • c721t -- ma683zda? 2007-11-03 (土) 04:57:44

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

設定ファイルの修正 Edit

ローカルなアイコンを直接表示させるためにアイコンフォルダを準備 Edit

pukiwiki.ini.php

// ローカルなアイコン管理用
// 管理者がアイコンを置くためのディレクトリ
define('ICON_DIR', 'icon/');
// アイコン用のURIを設定
define('ICON_URI', ROOT_URI . ICON_DIR);

(up)(new)を手軽に入れれるようにする Edit

(up) (new)

という表記で簡単にアイコンを書けるようにする。
default.ini.php ファイルの facemark_rules に追記

// new up marks
'(\(new\))'     => ' <img alt="$1" src="' . ICON_URI . 'new.jpg" />',
'(\(up\))'      => ' <img alt="$1" src="' . ICON_URI . 'up.jpg" />',
'(\(star\))'    => ' <img alt="$1" src="' . ICON_URI . 'star.gif" />',

アイコンフォルダにある画像を簡単に直接表示できるようにする Edit

(icon 【画像ファイル名】)

という場合、アイコン画像のURLが直接書かれるようにする。
default.ini.php ファイルの facemark_rules に追記

// icon replace
'\(icon\s+(\S+)\)' =>' <img alt="$1" src="' . ICON_URI . '$1" />',

refプラグインで画像サイズを取得しないようにする Edit

refプラグインで画像が表示する場合、デフォルトでは画像サイズを得るようになっているが、取得できない画像や時間がかかるものがある場合、そこでサイズを得るために読み込もうとするため、非常に遅くなってしまう問題が起こる。
URL指定時に画像サイズを取得するかを決める PLUGIN_REF_URL_GET_IMAGE_SIZE を画像サイズを取得しないように変更。

pukiwiki.ini.php

define('PLUGIN_REF_URL_GET_IMAGE_SIZE', FALSE);

コメントの入力欄を2行に設定 Edit

comment,pcomment プラグインの修正をして、コメントの入力欄を指定できるようにしたので、comment,pcomment共に2行に指定。

pukiwiki.ini.php

define('PLUGIN_COMMENT_ROWS_MSG',    2);
define('PLUGIN_PCOMMENT_ROWS_MSG',   2);

ARTICLEプラグインの投稿内容で改行をBRに自動変換しない Edit

pukiwiki.ini.php

define('PLUGIN_ARTICLE_AUTO_BR',     0);

RSSのデフォルト出力バージョンを1.0にする Edit

CSSを変更し、rssdiffプラグインを使ってRSSの出力に差分も表示されるようにしたため、現在は使っていません。

pukiwiki.ini.php

define('PLUGIN_RSS_VERSION_DEFAULT', '1.0');

スキンの設定 Edit

skin/miasa.skin.php というスキン設定ファイルを skin/iridorange.skin.php をベースに修正して作成

上部メニューの表示内容を修正する Edit

ja.lng.php ファイルの内容を修正

「編集」→「このページを編集する」
「バックアップ」→「更新履歴をみる」
「差分」→「最新の修正箇所をみる」
など、説明をわかりやすいように変更。

fileja.lng.php.patch

Navi2を利用しているため、Navigationページを修正してメニュー内容を変更

-edit
-diff
-backup
-new
--rename
--upload
--copy
--freeze
--unfreeze

という設定で

このページを編集する 最新の修正箇所をみる 更新履歴をみる 新しいページを作る

という表示になります。

本文にページタイトルが出ないようにする Edit

skin/miasa.skin.php ファイルでH1を本文に出さないようにして、サイトタイトルの下のページ名をH1で出すように修正

編集時にはじめからテキスト整形ルールを表示するようにする Edit

skin/miasa.skin.php ファイルで

$_LINK['edit'] = "$script?cmd=edit&amp;help=true&amp;page=$r_page";

を入れて、編集コマンドで最初からhelp=trueとなるように修正

RSSをrssdiffプラグインを使うように変更 Edit

skin/miasa.skin.php ファイルで

$_LINK['rss']  = "$script?cmd=rssdiff";

を入れて、rssdiffプラグインのRSSの出力として使うように修正

スパム対策 Edit

「FrontPage」→「TopPage」に修正 Edit

pukiwiki.ini.phpで「$defaultpage」を「FrontPage」→「TopPage」に修正。
スパマーはFrontPageで検索してターゲットを探している場合が多いようなので、FrontPageという名前を使わないようにしました。

pukiwiki.ini.php

$defaultpage  = 'TopPage';     // トップページ / 既定のページ

タイムスタンプを変更しないで修正を出来なくする Edit

URL書き換えスパムが、タイムスタンプを変更しないでこっそり変更してくるため、タイムスタンプを変更しないで修正が出来ないように修正。

pukiwiki.ini.php

$notimeupdate = 2;

いくつかのスパムフィルタを使えるspam_filter.phpの導入 Edit

lib/spam_filter.php filespam_filter.php
lib/plugin.php へのパッチ fileplugin.php.patch

および、正規表現によるHTTP_USER_AGENTでのフィルタを利用するためのパッチ
lib/init.php へのパッチ fileinit.php.patch

および、最終編集者の情報を知るためのパッチ
lib/file.php へのパッチ filefile.php.patch

を導入します。

spam_filter.phpをlibディレクトリ以下に置きます。
plugin.phpにplugin.php.patchを当てて同ファイルを置き換えます。同様にinit.phpとfile.phpもパッチを当てます。

ipcountryフィルタを使うため、
ftp://ftp.apnic.net/pub/apnic/stats/apnic/delegated-apnic-latest
のファイルをPukiWikiのトップディレクトリ(pukiwiki.ini.phpがあるディレクトリ)に置きます。

reCAPTCHAによるCAPTCHAを使うため、
PHP Library for reCAPTCHAからrecaptchalib.phpをlibディレクトリ以下に置きます。

NS系フィルタを使うため、PEARのNet_DNS(PEAR :: Package :: Net_DNS http://pear.php.net/package/Net_DNS)をダウンロードして、トップディレクトリにNetというディレクトリ名に変更して置きます。もしくは普通にPEARのライブラリを置く場所にインストールしても良いです。
また、キャッシュ用のdns_get_ns.cacheというファイルをtouchで作って、chmod a+wでファイル属性を777にしておきます。

下記のように、利用するスパムフィルタを指定します。

pukiwiki.ini.php

define('SPAM_FILTER_COND', '#useragent() or #filename() or #formname() or #atag() or (#onlyeng() and #urlnum()) or #urlbl() or #urlnsbl()');
define('SPAM_FILTER_CAPTCHA_COND', '#url and (#onlyeng or #ipcountry() or #ipdnsbl())');
define('SPAM_FILTER_WHITEREG', '/(miasa\.info|hakuba\.jp|hakuba\.ne\.jp|nagano\.jp|miasa\.ne\.jp/i');
define('SPAM_FILTER_RECAPTCHA_PUBLICKEY',  '【公開鍵】');
define('SPAM_FILTER_RECAPTCHA_PRIVATEKEY', '【秘密鍵】');

現在導入しているフィルタとその設定です。

  • 拒否
    • クライアントHTTP_USER_AGENTが「WWW-Mechanize」「libwww-perl」等からの書き込みとファイル添付を拒否
    • 添付ファイル名拡張子が「.html」「.htm」の添付を拒否
    • フォームに存在しないはずのurlやemailという名前の項目があったら拒否
    • 編集した内容に</a>や[/url]が含まれている書き込みを拒否
    • 内容に日本語がなくてURLが3件以上ある書き込みを拒否
    • URLのブラックリストで拒否(ブラックリストはデフォルト)
    • URLのネームサーバのブラックリストで拒否(ブラックリストはデフォルト、主に中国のレンタルサーバNS)
  • CAPCHAでチェック
    • URLが書いてあってかつ、中国韓国ウクライナからか、公開ブラックリスト(オープンプロクシなど)からの書き込み

スパム投稿の情報を参照できるパッチを導入 Edit

init.php/file.php
スパム投稿の情報を簡単に参照できるようにするため、diffで表示した差分の最後に、編集者のIPやUSER AGENT情報などを表示するように修正。

AタグやphpBB形式のタグ書式でURLが書き込まれていたら、その書き込みをキャンセル Edit

これは前記spam_filter.phpに統合されたため、現在は利用していません。
spam_filter.phpを設置してplugin.phpへのパッチを当ててもらえれば、個別のプラグインへのパッチを当てる必要はないので、spam_filter.phpのほうを利用いただいたほうが簡単です。

articleやcomment,pcommentの内容に、「</a>」と「[/url]」というタグが入っている書き込みを拒否する。

article.inc.php,comment.inc.php,pcomment.inc.php プラグインの修正と、禁止パラメータの指定。

pukiwiki.ini.php

define('PLUGIN_COMMENT_NGREG',  '/<\/a>|\[\/url\]/i');
define('PLUGIN_PCOMMENT_NGREG', '/<\/a>|\[\/url\]/i');
define('PLUGIN_ARTICLE_NGREG',  '/<\/a>|\[\/url\]/i');

「.html」「.htm」のファイルアップロードを禁止 Edit

これは前記spam_filter.phpに統合されたため、現在は利用していません。
spam_filter.phpを設置してplugin.phpへのパッチを当ててもらえれば、個別のプラグインへのパッチを当てる必要はないので、spam_filter.phpのほうを利用いただいたほうが簡単です。

拡張子がHTMLファイルのアップロードを禁止しました。

attach.inc.php プラグインの修正と、禁止パラメータの指定。

pukiwiki.ini.php

define('PLUGIN_ATTACH_UPLOAD_FILEREG', '/\.html$|\.htm$/');

リダイレクトサービスを利用したURLが一定数以上の更新を禁止 Edit

本家のURLリストからリダイレクトサービスの部分を引いてきて、それだけ禁止にできるようにしたい。
というか、本家のURLブラックリストを利用できるようにしたいが、まだ手をつけてない。

他のWikiサイトでの導入例と本家バージョン向けパッチ Edit

Wiki/PukiWiki/スパム(spam)を防止する方法 - TOBY SOFT wiki
http://tobysoft.net/wiki/index.php?Wiki%2FPukiWiki%2F%A5%B9%A5%D1%A5%E0%28spam%29%A4%F2%CB%C9%BB%DF%A4%B9%A4%EB%CA%FD%CB%A1

質問や要望などコメントがあればどうぞ Edit

  • 他のWikiサイトでの導入例と本家バージョン向けパッチ ですけど、
    Wiki/PukiWiki/スパム(spam)を防止する方法 - TOBY SOFT wiki
    http://tobysoft.net/wiki/index.php?Wiki%2FPukiWiki%2F%A5%B9%A5%D1%A5%E0%28spam%29%A4%F2%CB%C9%BB%DF%A4%B9%A4%EB%CA%FD%CB%A1
    に変わってるみたいです -- 2007-06-18 (月) 09:37:47
  • ありがとうございます。リンク先を修正しました。 -- さとう 2007-06-19 (火) 10:07:53
  • Nice site!
    http://jwnbmmat.com/dqeq/vhzs.html | http://wkapzxut.com/exaa/ulog.html -- Pamela? 2007-07-30 (月) 20:31:27
  • ↑すごく久しぶりにスパムが抜けてきました。
    が、このURLは存在していないし、ドメインも取得されていないようです。
    もしかして時限式なのか?つまり、書き込んでおいて、後からドメインを取得してURLのページを作るのかと思い、記録代わりに残しておきたいと思います。 -- さとう 2007-07-31 (火) 01:35:41
  • spam_filter.php はtrackerには使えないのでしょうか?
    trackerスパムに対してまったく機能しません。 -- sel? 2007-09-02 (日) 22:48:16
  • 良く確認していませんが、trackerの「内容」について検査するフィルタは上手く動かない可能性はあります。
    「内容」を示すフィールド名が'msg'ではない場合、そうなります。 -- さとう 2007-09-03 (月) 16:32:44


このページは管理者しか編集できないように制限を掛けています。