簡易掲示板のカスタマイズ方法について


 今月は、予定を変更して普及型・掲示板のカスタマイズ方法について記します。

 掲示板、利用はするけれど、中身については、全く知らない。なんて言う方が大勢いると思います。日頃、世話になっている掲示板、一体どんな言語でプログラミングされているかご存知ですか?まさかHTMLなんて言う人は...ありゃ、そんなに大勢?HTMLならプログラミングとは言いませんね。(^_^)
 はい、殆どの掲示板がPerlと言うインタープリタな言語を用いてプログラミングされています。中には、処理速度や記述性を重んじてC言語やC++言語でプログラミングしている例もあります。他では、VBとか言う例も極、まれにあるようです。

 実は、私こう見えても業界人の端くれで、C言語やC++言語なんかは朝飯前。たまに機械語もできるなんて自慢げに語る人もいますが、そんなの私から言わせれば、屁みたいなもの。今でもヘキサコードだけでちゃんとプログラミングできちゃいます。昔取った杵柄と言う奴でしょうか。本当は早く忘れたい。(^_^) シーラ氏のマルチリンガルじゃないけれど、コンピューター言語なら軽く10言語以上は話せます。(もちろん翻訳だってOKよ!)でも最近、全く書いていないから忘れてしまっているでしょうけど。(^_^;)

 何故、掲示板にPerlが普及したのでしょうか?私もPerlを知る前までは、C言語でプログラミングした方が絶対に楽だと考えていました。しかし、Perlを知ってからは、考えが180度変わりました。(何処かで聞いたことのあるフレーズだなぁ。)
 @簡単(やや疑問)
 Aお手軽(Perlはフリー)
 B楽ちん(他の言語では、関数を幾つも組み合わせなければ実現できないような処理が1行で実現できてしまいます。)
てなことで、少しぐらい重くても(=遅くても)大概のことは許せてしまうのです。恐らくこの当たりが普及した最大の理由ではないかと思います。

 さて、私がインターネットにデビューした頃の話です。「オー、ハイレベルやんけぇ。インターネットっうのもんは、プログラムオタクか業界人の集いの場かぁ。」なんて思ったほどで、物凄いプレッシャーを感じたものです。特に掲示板の存在は脅威でした。何故、素人の癖にこんなすんげぇプログラムが書けるんだ?なんてね具合にね。でも、なぁに大したことはありません。皆さん単なるまねっこだったのです。動作の仕組みを知らないのもなるほど肯けます。それに輪をかけ最近では、レンタル掲示板なるものが出現し、ますますチンプンカンプンになるばかりです。その点、まちかねは違うよね。自分の掲示板を良く知っているし、コメントの削除やHTMLタグもちゃんと理解している。(お世辞だよ!!)

 普及型の掲示板を運用する場合、良くも悪くも全てがオープンなわけですから、しっかりと機能を理解した上で、運用していただきたいものです。さもなければ、Attack(攻撃)された。はて?「お前が犯人だろう、怪しいハンドルを使っていたじゃないかぁ。」等とログを引っ張り出しては、あらぬ疑いをかけられ...あげく「済みません。不快な思いをさせました。」なんてことになりかねません。そうです。あの時の事件を今でも恨みに思っているのです。タブルTさん(ハンドル名)。hihihihi、冗談ですよ!(^_-)

 支離滅裂な文章になってきました。つまり、何が言いたいかと言うと「あれフリーだし、皆が使っているから自分も...」は、良いけれど、きちんとした自衛策を講じ&ある程度の仕組みを理解した上で運用しなさいと言うことなんですわ。さすれば、あの時の様に人様を不快な思いに陥れることはないのですよ。諸君!
 と言うことで、今月は、Webレスキューで提供されている普及型の掲示板「MiniBBS」シリーズをベースにその弱点と防御方法について、考察してみます。

 前からこんなのやって見たいと思っていたのよね。ようやく思いが遂げられた感じです。(^-^)g"
 くれぐれも思惑とは、逆の使い方をしないで下さいね。(^_^)



 掲示板の防御策は、色々な方法があります。しかし、全ての事態を想定し、防御の策を講じても使い勝手の悪い不便な掲示板になってしまうばかりか、サーバーにも大変な負荷がかかってしまいます。つまり、どの程度の実装で留め置くかが大きなポイントとなるわけです。むろん、仕組みさえ理解していれば、素の状態で運用するのも可能です。最終的に、どう実装するかは、ご自信で決めなければならないわけですからじっくり検討し、最良の実装を見つけ出して下さい。そして、もし、この特集が、これから掲示板の設置を考えている人のお役に立てれば...特集を組んだ甲斐あったというもんです。(^_^)

データファイル名の変更
 掲示板のデータは、誰でも書ける設定になっています。デフォルトのままで使用しているとデータファイルを削除される恐れがあります。設置する場合は、必ずデータ名を変更しておくことを推奨します。

メッセージ蓄積数の規制緩和
 メッセージの蓄積数に制限をつけると、連続投稿した場合、それ以前に書き込まれたメッセージ(データ)が削除されてしまいます。大概は、ホームページの容量に制限があるので「無制限にして下さい。」とは、言えませんが、できるだけ大きめに見積もっておいて下さい。実際の蓄積数よりも、少な目にアナウンスしておくのも1つの方法です。

言動の非自由化★★
 バカ野郎、くたばれ、くそったれ、う○こ、ち○こ、ま○こ、お○こ、死ねなどの類は、黙って見過ごしてはいけません。できるだけフィルタをかけて拒否できるようにしましょう。
 実際にあった例ですが、間抜けなAttckerは、攻撃する前にちょっと気取って?「攻撃前準備」等とコメントを残して行きました。こんな投稿を見つけたら、迷わずブラウザをクラッシュさせてしまいましょう。また、別の画面で「テポドン2号で応戦いたします。」なんてしゃれたレスをつけるのも効果的です。(^_^)但し、この場合、ターゲットの情報は、必ずファイルにセーブしておくこと。そうしないと応戦できないからね。

HTTP環境変数の保存★★★
 Apacheなどでは、printenvというCGIが標準で入っています。これは、全ての環境変数を表示するCGIで、これで得たデータを保存しておけば、大概のことは事足ります。

タグ禁止★★
 タグを全面的に許可している掲示板をたまに見かけます。古いタイプのBBSを使用している性でしょうか?私から言わせるとあまりにも無防備すぎます。最近のタイプは、タグを全面的に禁止している(MiniBBSのV9とMiniBBSU)仕様が多く、それ以下の版でも、使用制限を設けられる仕組みになっています。
 例えば、ページワープやビックキャラなどと言う初歩的な悪戯に耐えられる仕組みを具備することが最低の条件です。その意味では、タグの使用をできるだけ制限することです。

【ページワープ】
 掲示板アクセス時に他のURLへ強制的に飛ばしてしまうと言う初歩的な悪戯です。

【ビックキャラ】
 フォントタグを使用する超初歩的な悪戯です。タグを故意に閉じなかったり、文字サイズを変更して、投稿するそれです。前者は、私が良くやる奴です。

【Javaスクリプト】
 タグが使える掲示板でときどき見かけますが、非常に危険で、場合によってはメールアカウントやパスワードなどが奪われる恐れがあります。また、訪問者のファイルを取得したりすることも可能です。絶対に許可してはなりません。

投稿者名チェック★★
 悪意を持った投稿やAttackerから掲示板を守るためにふざけた投稿者名での投稿は、断じて拒否すべきです。予めデータ化しておき、チェックする仕組みにしておけば、これらの投稿を拒否することができます。また、環境変数などを利用して、嫌がらせをした野郎達の情報をデータベース化し、投稿者名をキーにチェックするような仕組みを持てばより、完璧と言えるでしょう。

HTTP_X_FORWARDED_FOR★★★
 発言者が串サーバーを使っている場合でも、環境変数を使用することにより、発信元の情報を得ることができます。串サーバーを使ったアクセスでも、殆どの場合、これで逆探知可能なわけです。串経由だからと言って、ふざけた投稿をするとばれてしまいます。(ばつわりぃ。)

メッセージ長の制限
 長いだけで意味のないメッセージは、表示するのに時間がかり、他の利用者の迷惑になります。この手の投稿はできるだけ拒否できるようにしましょう。恐らく殆どの掲示板で制限されているはずです。

【ディスク容量のキャパ】
 ホームディレクトには、大抵は容量制限がつています。掲示板のデータだけで、この容量を超えしまうと掲示板に書き込むことができなくなります。

怪しい奴を見かけたら110番
 警告情報は、自分で分かっている範囲で表示するようにして下さい。例えば、Javaを使ってコンピューター名やユーザー名、IPアドレスなどの警告メッセージを表示しても、自分自身がこの情報を得られていなければ、全く意味がありません。これらの情報は、HTTP環境変数などから抽出し、プロバイダー名などを表示してやると大変効果があります。

連続禁止★★
 同じ投稿者名による全く同じ内容の文書が連続投稿可能な掲示板を目にすることがあります。Webレスキューで提供されているMiniBBSシリーズが、これに該当します。それが仕様だから仕方あるまい...と言ってしまえばそれまでのこと。(割り切りっう奴です。)と言うことで、これ以上、敢えて言及しませんが、二重投稿のチェックは忘れずに行いましょう。(^_-)

【周期書き込み】
 一定時間ごとに投稿すると言う荒技も考えられるます。例えば、1分周期で投稿できてしまうプログラムが作られてしまったら...「掲示板のインプリは、絶対外部に漏らさない」これが最大の防御策かもしれません。

おまけ(利用者の心得)★★★

【SPAMメッセージ】
 掲示板の趣旨に沿わないメッセージや長いだけで意味のないメッセージは、表示するのに時間がかり、他の利用者の迷惑になります。また、小中学生が出入りするような掲示板では、卑猥な発言は極力謹んで下さい。SPAMerと言われたくなければね。

【個人情報の開示】
 掲示板は、匿名性が高いと思っているので、なんでも、気軽に書いてしまう傾向があります。しかし、優れた管理者やハッカーは、その限られた情報から、あなたが提供した以上の情報を引き出す術を知っています。例えば、本名、住所、電話番号、経歴、家族構成など...
 また、ターゲットの電話番号を悪用したり、ターゲットの名前で、卑猥な発言を投稿したりするケースも考えられます。場合によっては、傷害に発展する可能性もあります。掲示板での個人情報の開示は絶対にやらない様、心がけて下さい。

 ふぅ。てなことで、下らない能書きたれていたら、ソースプログラムにコメントをつけるのが面倒になってきた。
 ソースの公開は次号のお楽しみ?と言うことにします。と言うわけだから、いつもの連載も来月はお休みね。

 注)印の数は、実装の難易度を意味します。
 本文中に一部不適切な表現が合ったことをお詫びいたします。

 全ての防御策を講じても、絶対と言うことはあり得ません。必ず何処かにセキュリティホールが出てくるものです。レアケースを考慮して、わざわざ使い勝手の悪い掲示板にする必要もなく、要はサーバーに負荷がかからない程度の防御に留め置くことがベストと言えます。その意味では、何も手を加えずに素のまま運用できるのが一番良いのかもしれません。(^-^)g"  

 来月号、後編につづく。

このコーナーに関するご意見ご要望をお待ちしております。


10月号目次へ

10月号目次へ(フレーム未対応)