"Shade検索"Wiki

CGI/Clip Board改造版

お知らせ
管理者がトレンドマイクロのセキュリティソフトを使用している場合、アクセス制限ページのログイン情報が外部に漏れる恐れがあります。
対策を施したver.1.28に更新をお願いします。

検索CGIなどで使用している掲示板は、主に kent-web で公開されているCGIをベースに多少カスタマイズしたものです。自分で使いやすいように改造したものなので、万人受けするものではないかもしれませんが、スクリプトを公開することにします。興味のある方は使ってみてください。ご使用の場合は、kent-webのCGIスクリプト利用規定をご覧ください。バグや質問などありましたら、kent-webのサポートではなく、CGI掲示板までお願いします。

Clip Board(アップロード掲示板)


画像などのバイナリファイルをアップロードすることのできる掲示板ですが、以下のように改造しています。

  1. スパム投稿対策に効果のある投稿キー機能を追加。kent-webの掲示板には、すでにこの投稿キー機能を備えたものがいくつかありますが、Clip Boardはまだ未装備のようです。Clip Boardには、拒否ホスト、拒否IPアドレスからの投稿制限、禁止ワードを含む投稿の拒否、日本語が含まれていない投稿の拒否、URLを多数含む投稿の拒否など、さまざまな迷惑投稿防止策が施されており、合わせて使用可能ですが、私の経験からいうと投稿キーが強力なので、ほかの機能はオフでも十分スパム投稿を防いでくれると思います。
  2. メールアドレスを直接表示せずに、投稿者がメールを受け取ることができるフォームメール機能を追加。自分のメールアドレスを公開せずにメールが受け取れるので、スパム業者にメールアドレスを知られる心配がありません。投稿者あてにフォームメールを送れる掲示板というのは、意外と少ないようです。フォームメールは同じくkent-webのClipMailを使用させてもらいました。ファイル添付も可能なフォームメールです。
  3. オリジナルにはない過去ログ生成機能を追加。kent-webではいろいろな掲示板スクリプトが公開されていて、その中には過去ログ生成するものもたくさんあるのですが、ファイルアップロード方式のものはなかったと思うので、ひょっとして需要があるかなと思いました。
  4. 通常は、スクリプトファイルを直接編集しなければならない掲示板の設定をWEBブラウザから設定できるようにしました。設定ファイルを開いて書き換えるのと、あまり手間は変わらないような気もしますが、メモ帳で開くよりは見やすいかもしれません。管理者用パスワードも最初の起動時にブラウザから入力する方式となっています。
  5. 細かい部分では、引用文の色変え、検索キーワードの強調表示、スクリプトコードを投稿するときなどのために、インデントをブラウザの表示に反映し、そのままコピーペーストできるようにしたこと。また、管理者が管理画面を開くときにパスワードを入力しなくていいように、クッキー対応にしました。
  6. スパム投稿で書き込まれるURLからIPアドレスを抽出し、そのIPアドレスが投稿禁止IPだったら投稿を拒否できるようにしました。

更新履歴

2013.03.13
ver.1.28 管理画面でパスワードを含んだURLへリダイレクトするのをやめました。
2010.01.26
ver.1.25 コメント中のドメイン抽出方法を変更しました。
2009.11.26
ver.1.24 コメント中のURLからのみIP抽出していたのを、HPのURLからも抜き出すようにしました。本文中にURLを入れないスパム投稿対策用。
2009.09.11
ver.1.23 URLからのIP抽出がうまくいかないケースがあるのを修正しました。ダウンロードファイルが古いファイルのままになっていたのを修正しました。
2009.08.20
ver.1.22 ドメインからIPアドレスを調べ、同じIPアドレスのドメインを含むURLの書き込みを拒否する機能を追加しました。
2009.04.21
ver1.2 パスワード変更時に「パスワードが違います」とエラーメッセージが出るのを修正しました。
フォームメール送信時に、送信者へ送られる控えメールの送信元を変更可能にしました。(送信者自身のメールアドレスをデフォルトにしています)
拒否した投稿のログを残せるようにして、ログ閲覧用CGIを追加しました。

少し修正しました。2009/04/22

  • スパム投稿にかなり効果があった投稿キーですが、最近これをも突破して書き込みされるケースが目立っています。フォームから手作業で投稿しているのかと思ったら、投稿キーの数字画像を解析しているかもしれないらしいです。そこで投稿キーで表示される数字にノイズを加えたり、複数のフォントを使用することによって人間以外には読みにくくするという方式のregistkey.cgiに変更してみました。(てけてんさん配布)
  • それと、禁止ワードによる投稿拒否も思ったより効果があるようなので、どれくらい投稿拒否が成功したか確認するため、拒否した投稿のログを残せるようにしました。傾向が分析しやすいよう、拒否投稿閲覧用のCGIも追加しました。
    フォームメールについても少し変更しました。フォームメール送信者へ控えメールを送信する設定にしている場合、掲示板投稿者のメールアドレスを控えメールの送信元にしていましたが、これをフォームメール送信者自身のメールアドレスにできるように修正しました。万一スパム業者にフォームメールを使用され、掲示板投稿者のメールアドレスが知られてしまうのを防ぐためです。
  • さらに細かいところですが、管理者パスワードを変更すると「パスワードが違います」とエラーメッセージが出て、管理モードから追い出されてしまうバグを修正しました。

拒否IPのドメインを拒否するオプションを追加しました。 2009/08/20


スパム投稿防止策として、メッセージに書き込まれるURLを禁止ワードに登録するという方法が意外と効果的ですが、実体は同じサイトなのにいろいろなドメインで登録しているというケースがあるようです。その手のドメイン名を片っ端から禁止ワードに登録してもいいのですが、このようなサイトはIPアドレスは同じという場合が多いようです。そこで、URLからIPを割り出し、禁止IPアドレスだったら投稿拒否するという処理を追加しました。いまのところ抜き出すURLは//に囲まれて.com、.net、.jpで終わる文字列です。 → 英数字か_(アンダーバー)で始まり、英数字か_(アンダーバー)か-(ハイフン)か.(ドット)が何文字か続き、英数字のあとに.(ドット)があって、最後に英文字が1〜4文字続いたらドメインとして抽出するよう変更しました。(わかりにくいですが・・・)

ドメイン名は違うのに同じサイトに行くというURLを書き込んだスパムがあったら、そのドメインからIPアドレスを調べて、$deny_addr に追加すれば、別のドメイン名に変更したURLが書き込まれても拒否できます。

ドメインからIPを調べる方法としてはコマンドプロンプトで調べるのが一般的なようです。アクセサリ→コマンドプロンプト、あるいは「ファイル名を指定して実行」に「cmd」と打ち込んでコマンドプロンプトを起動します。

nslookup ドメイン名

と入れてEnterを押すと

Name : ドメイン名
Adress : IPアドレス

が表示されます。

・・・とやってもいいんですが、CGIの方でドメイン名を入れると拒否IPアドレスを追加できるよう修正しました。
掲示板設定画面で、拒否IPアドレス入力フォームの下に「拒否するドメイン」入力フォームに拒否したいドメイン(au-au-a.net anahorisan.comなど)を入力し、「ドメイン名から拒否IPを追加」ボタンを押します。
重複チェックするので、すでに登録されているIPアドレスの場合は追加されません。

この機能を既存の掲示板スクリプトに簡単に追加できるモジュールを公開しました。→CGI/IP拒否CGI

使用法


ダウンロードしたclip.zipを解凍すると、以下のようなフォルダ、ファイルに展開されます。

 public_html / 
    |
    +-- clip / clip.cgi       [705]
         |     init.cgi       [604]
         |     cliplog.cgi    [606]
         |     registkey.cgi  [705]
     |     show_reject.cgi[705]
         |
         +-- lib / cgi-lib.pl   [604]
         |         jcode.pl     [604]
         |         registkey.pl [604]
         |
         +-- img [707]/ clip.gif
         |              home.gif
         |              soon.gif
         |              mail.gif
         |
         +-- lock / [707]
         |
         +-- clipmail / clipmail.cgi [705]
               |       init.cgi      [604]
               |
               +--- lib / jcode.pl     [604]
               |          io-socket.pl [604]
               |          mimew.pl     [604]
               |          check.pl     [604]
               |          errcheck.pl  [604]
               |          preview.pl   [604]
               |          sendmail.pl  [604]
               |
               +--- temp /  [707]
               |
               +--- tmpl / body.txt
                           body_res.txt
                           conf.html
                           thx.html
                           err1.html
                           err2.html

このうち、clip.cgi registkey.cgi show_reject.cgi それと clipmail ディレクトリ内の clipmail.cgi をテキストエディタで開き、1行目の

 #!/usr/local/bin/perl

を、使用するサーバーに合わせて書き換えます。

このスクリプトは文字コードがEUCになっています。Windows付属のメモ帳はEUCに対応していないようです。お手数ですが、EUC対応のテキストエディタをお使いください。

EUCじゃなくてShift-JISでした。ほかのCGIと勘違いしてたのかな?


サーバーにすべてのファイルをアップロードしたら、clip.cgi registkey.cgi clipmail.cgi show_reject.cgi の4個のファイルのパーミッションを、サーバーでCGIとして実行できるものに変更してください。(たとえば上の図のように[705]など)

これが済んだら、ブラウザで clip.cgiにアクセスしてみてください。
最初のアクセスでは、管理者パスワードが設定されていない状態なので、パスワードを設定するように求められます。管理者パスワードを設定したら、まず掲示板の設定画面に移動しますので、必要に応じて設定を変更してください。

設定は以上です。バグなどありましたら、CGI掲示板までお願いします。



22432


>>2013/03/18 19:58:48更新>>